交换 communidad 。我正在尝试为我的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
是一个模型,它具有一个名为description
的字符串类型的属性,这是我正在测试的内容以及返回true的内容:TrueClass无意义。
任何线索?谢谢你!
答案 0 :(得分:1)
通过FactoryGirl创建条目记录时,您使用的是“should be_valid”方法,该方法返回一个布尔对象。 因此,在条目数组中,您只有布尔值。
entries = [true,true,true,true,true]
这就是为什么给出错误:
undefined method `description' for true:TrueClass
您应该在entries变量中获取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数组,然后您可以使用所有相关的方法。