Rspec没有找到父对象

时间:2014-07-22 17:59:03

标签: ruby-on-rails ruby-on-rails-4 rspec capybara

好的,在我的实际邮件代码中,我已经采取了下面的临时权宜之计:

  if Rails.env == "test" 
    @requestlist["#{index}"] = {"#{Itemlist.find_by_id(b.itemlist_id).name}" => "#{Inventory.find_by_id(b.inventory_id)}"}
  else
    @requestlist["#{index}"] = {"#{Itemlist.find_by_id(b.itemlist_id).name}" => "#{Inventory.find_by_id(b.inventory_id).signup.email}"}
  end

这非常奇怪,因为:

  1. 如果我使用测试第二个语句,我会为NoMethodError
  2. 获得NilClass,'注册'
  3. 但显然,由于第一个语句正在传递,Inventory显然不是Nil(我的意思是如果Signup对象没有找到它会有所不同...... )
  4. 此外,我已经手动测试了这封邮件,邮件程序能够正确检索.signup.email
  5. 此外,需要检索signup.email Inventory的其他测试才能通过
  6. 思想?

1 个答案:

答案 0 :(得分:0)

首先,为什么不写作?

@requestlist[index] = { Itemlist.find_by_id(b.itemlist_id).name => Inventory.find_by_id(b.inventory_id).signup.email }

其次,您没有怀疑NilClass的NoMethodError可能意味着

Inventory.find_by_id(b.inventory_id)

不会从数据库中返回任何行吗?

第三,它是if并尝试"修复tests? (btw you can write Rails.env.test?`)