當我測試我的控制器,我做了一件這樣的失敗:RSpec的比較空的ActiveRecord ::關係
bar = SuperDuper.calculate(resource)
expect(assigns(:foo)).to eq(bar)
我得到這個結果
expected: #<ActiveRecord::Relation []>
got: #<ActiveRecord::Relation []>
(compared using ==)
爲什麼RSpec的認爲這是失敗?
正如你所看到的,我使用eq
忽略了對象標識,而不是equal
,它比較了對象標識。
也許rspec通過鏈接斷言對象是相等的。所以你有兩個相同的對象,但它們指向內存中的不同區域。考慮比較價值而不僅僅是對象比較 – tmn4jq
@ tmn4jq在這裏我使用'eq'來比較值,而不是使用'equal'來比較對象標識 –
調試與'expect(assigns(:foo).to_a).to eq bar.to_a)'或'expect(賦值(:foo).to_sql).to eq(bar.to_sql)'。 –