Rspec/FactoryGirl: NoMethodError: undefined method 'description' для true: TrueClass

обмен общиной. Я пытаюсь написать тест функции для моей программы RoR, но я получаю следующую ошибку, когда я запускаю rspec:

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 - это модель, которая имеет атрибут типа string, называемый description который является тем, что я тестирую, и возвращающим истину: бессмысленность TrueClass.

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

1 ответ

При создании записей записей через FactoryGirl вы используете метод "должен 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, а затем вы сможете использовать все связанные методы.

licensed under cc by-sa 3.0 with attribution.