空的ActiveRecord :: Relations在RSpec中不进行比较

时间:2016-07-16 21:53:11

标签: activerecord rspec rspec-rails

我简化了我的RSpec比较问题:

expect(DetailObjective.all.limit(0)).to eq(DetailObjective.none)

返回失败的结果:

expected: #<ActiveRecord::Relation []>

got: #<ActiveRecord::Relation []>

 (compared using ==)

看起来他们匹配?我如何比较这些空关系?我不想比较像be_empty这样的假货,因为它没有说明比较结构,只是内容。

1 个答案:

答案 0 :(得分:0)

DetailObjective.all.limit(0)DetailObjective.none都会返回ActiveRecord::Relation的新实例,但当对象不相同时,eq会返回false - 也就是说,他们不是同一个对象。您可以通过将每个方法的输出分配给局部变量并检查其object_id来轻松地看到这一点 - 它们将是不同的。

  

我不想比较像be_empty这样的假货......

不确定你的意思是假的&#39;。集合是复杂的类型 - 比较它们不像比较整数。当拥有相同的成员时,它们是否相同?当成员的顺序相同时?当成员是同一个班级?

将一个空集合与另一个空集合进行比较似乎没有多大意义......你能明确指出你想在这里完成什么吗?