0

交流公报。我正在尝试为我的 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

where 在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这是我正在测试的对象,并且返回的是 true:TrueClass 废话。

有什么线索吗?非常感谢你!

4

1 回答 1

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 数组,然后您可以使用所有相关方法。

于 2013-08-23T21:27:40.970 回答