Rspec / FactoryGirl:NoM​​ethodError:未定义的方法'description'表示true:TrueClass

时间:2013-08-23 21:20:43

标签: ruby-on-rails rspec factory-bot

交换 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无意义。

任何线索?谢谢你!

1 个答案:

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