我简化了我的RSpec比较问题:
expect(DetailObjective.all.limit(0)).to eq(DetailObjective.none)
返回失败的结果:
expected: #<ActiveRecord::Relation []>
got: #<ActiveRecord::Relation []>
(compared using ==)
看起来他们匹配?我如何比较这些空关系?我不想比较像be_empty这样的假货,因为它没有说明比较结构,只是内容。
答案 0 :(得分:0)
DetailObjective.all.limit(0)
和DetailObjective.none
都会返回ActiveRecord::Relation
的新实例,但当对象不相同时,eq
会返回false
- 也就是说,他们不是同一个对象。您可以通过将每个方法的输出分配给局部变量并检查其object_id
来轻松地看到这一点 - 它们将是不同的。
我不想比较像be_empty这样的假货......
不确定你的意思是假的&#39;。集合是复杂的类型 - 比较它们不像比较整数。当拥有相同的成员时,它们是否相同?当成员的顺序相同时?当成员是同一个班级?
将一个空集合与另一个空集合进行比较似乎没有多大意义......你能明确指出你想在这里完成什么吗?