rspec未定义的局部变量已被“let”

时间:2015-02-27 04:43:20

标签: ruby rspec let

我需要测试一个文件是否包含某个单词列表。

所以我在描述集团中使用let:

let (:test_rb_structure) { %w(nom, description, prix, rdv, validation, heure, creation) }

我在同一个描述集团中称之为:

describe 'in app/controllers/api/v1/comptes.rb' do
  subject { file('app/controllers/api/v1/comptes.rb') }
  it { is_expected.to exist }
  # Test structure is respected
  test_rb_structure.each do |structure|
    it { is_expected.to contain(structure) }
  end
end

我遇到了这个错误:

undefined local variable or method `test_rb_structure'

有什么问题?我想不出来。

1 个答案:

答案 0 :(得分:3)

使用let定义的变量仅在示例(it)块中可用。所以你必须做以下事情:

describe 'in app/controllers/api/v1/comptes.rb' do
  let (:test_rb_structure) { %w(nom, description, prix, rdv, validation, heure, creation) }

  subject { file('app/controllers/api/v1/comptes.rb') }

  it { is_expected.to exist }

  it 'respects the test structure' do
    # Notice that `test_rb_structure` is used _inside_ the `it` block.
    test_rb_structure.each do |structure|
      expect(subject).to contain(structure)
    end
  end
end