0

我正在尝试在控制器中使用 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 ==)
4

1 回答 1

1

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

您可以通过执行“修复”您的测试

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

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

于 2013-10-25T20:02:35.047 回答