比较空的ActiveRecord :: Relation时RSpec失败

时间:2016-08-23 11:03:19

标签: ruby-on-rails rspec-rails

我正在测试我的控制器,我做了类似的事情:

bar = SuperDuper.calculate(resource)
expect(assigns(:foo)).to eq(bar)

我得到了这个结果

expected: #<ActiveRecord::Relation []>
     got: #<ActiveRecord::Relation []>

(compared using ==)

为什么RSpec将此视为失败?

正如您所看到的,我使用忽略对象标识的eq,而不是equal来比较对象标识。

1 个答案:

答案 0 :(得分:0)

我不确定,但您eq表示==。证明:https://www.relishapp.com/rspec/rspec-expectations/v/2-0/docs/matchers/equality-matchers

另请注意: a.eql?(b) # object equivalence - a and b have the same value

来自这里:Rspec `eq` vs `eql` in `expect` tests

所以,我相信你应该试试eql匹配器。