2015-02-27 3 views
0

Мне нужно проверить, содержит ли файл определенный список слов.rspec undefined локальная переменная, которая была `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' 

Что не так? Я не могу выяснить.

+2

Вы ссылались на 'test_rb_structure' вне блока' it', где переменные 'let' не определены. –

ответ

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 
+0

Извините за позднюю проверку. Но он отлично работает :) –

+0

Кроме того, вы можете использовать параметр 'it' для описания вашей спецификации, а не делать это с комментарием, что делает гораздо более удобочитаемые спецификации в' rspec --format documentation'. – theunraveler

 Смежные вопросы

  • Нет связанных вопросов^_^