2013-08-23 3 views
0

Communidad. Я пытаюсь написать тест функции для моей RoR программы, но я получаю следующее сообщение об ошибке, когда я бегу rspec:Rspec/FactoryGirl: NoMethodError: undefined method 'description' for true: TrueClass

Failure/Error: page.should have_content entry.description 
NoMethodError: 
    undefined method `description' for true:TrueClass 

Вот контекст, в котором бросают ошибка:

entries.each do |entry| 
    page.should have_content entry.description 

    end 

где entries определен ранее в том же тесте следующим образом:

entries = 5.times.map do 

    FactoryGirl.create(:entry, project_id: proj.id, :date => 9/10/13, :type_of_work => 'chump', :description => 'chumpin', 
         :phase => 'Draft', :status => 'Draft' , :on_off_site => 'off', :user_id => 1, :start_time => now, 
         :end_time => later).should be_valid 
    end 

Entry представляет собой модель, которая имеет атрибут типа Strin g называется description, который является тем, что я тестирую и что возвращает истину: бессмысленность TrueClass.

Любые провода? Благодарю вас!

ответ

1

При создании записей записей через FactoryGirl вы используете метод «should be_valid», который возвращает логический объект. Итак, в массиве записей вы имеете только логические значения.

entries = [true,true,true,true,true] 

Вот почему его дает ошибку:

undefined method `description' for true:TrueClass 

Вы должны получить массив active_records в переменной записей. Попробуйте этот код:

entries = 5.times.map do 

entry = FactoryGirl.create(:entry, project_id: proj.id, :date => 9/10/13, :type_of_work => 'chump', :description => 'chumpin', 
        :phase => 'Draft', :status => 'Draft' , :on_off_site => 'off', :user_id => 1, :start_time => now, 
        :end_time => later) 
    entry.should be_valid 
    entry 
end 

Он вернет массив active_record, а затем вы сможете использовать все связанные методы.

+0

Большое вам спасибо. Я по глупости не заметил, что '. Должен быть действительным' в блоке' do', который я явно скопировал из другого раздела кода и не понимал, что это выполняется каждый раз. – Thalatta

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