我有一个控制器索引测试来获取ActiveRecord作用域。 测试目前看起来是这样的(包括一些在线调试东西):rSpec ==/eql无法比较'相同'的东西
describe "GET index" do
it "assigns all schools as @schools" do
get :index
puts assigns(:schools).class
puts School.populated.class
assigns(:schools).should == School.populated
end
end
输出是这样的:
ActiveRecord::Relation
ActiveRecord::Relation
expected: []
got: [] (using ==)
Diff:
这绝对不是我第一次在最新版本中有这个Rails和rSpec。 以前,一位同事会将这些物品包装在to_a
中进行比较,我发现这有点脏,可能不是一个好的解决方案。
任何想法?我很好奇它为什么认为它们不同,以及在老版本的Rails和/或rSpec中如何通过相同的测试。
你要验证的类或对象人口?关系提供惰性加载,所以你没有任何执行的查询的步骤 – Anatoly
啊是的,我明白了,所以使用'.all'或'.to_a'会调用查询吗? – stuartc
是的,懒加载意味着火第一次请求查询 – Anatoly