RSpec错误:预期:nil,得到:[](使用==进行比较)

时间:2013-10-24 17:53:40

标签: ruby-on-rails testing rspec bdd rspec-rails

我正在尝试用Rspec测试控制器中的这一行:

@dreams = Dream.public_dreams.includes(:user).where("users.type_id = ?", 5)

我正在使用控制器测试中的这一行进行测试:

Dream.public_dreams.select { |dream| dream.user.type_id = 5 }.should eq(@dreams)

但是,我收到此错误:

expected: nil, got [] (compared using ==)

1 个答案:

答案 0 :(得分:1)

@dreams是一个实例变量,这意味着它与一个类绑定。控制器中的@dreams与测试中的@dreams不同。在Ruby中,对从未设置过的实例变量的任何引用都是nil

您可以通过

“修复”您的测试

Dream.public_dreams.select { |dream| dream.user.type_id = 5 }.should eq([])

但你可能想要那个数组中的东西。您可能没有返回任何内容,因为您的测试环境中的数据库中没有任何数据(或者可能只是没有该ID)。