我正試圖斷言一個物件的陣列包含一個預期的物件。然而,盡管該陣列確實包含了預期的物件(至少在我看來是這樣),但規范測驗卻一直失敗,并說該陣列不包含該物件。
下面是測驗的內容:
bubble_dtos = [...] 。
expected_bubble = ...
expect(bubble_dtos).to include(expected_bubble)
而這里是測驗結果:
失敗/錯誤: expect(bubble_dtos).to include(expected_bubble)
expected [<Soda::DTO::Bubble container_id=594, bubble_type="co2", flavor_id=3515, bubble_sid="soda: :bubble:dbid/1413", id=1413, desc="desc1">, <Soda。 :DTO::Bubble container_id=594, bubble_type="co2", flavor_id=3519, bubble_sid="soda: :bubble:dbid/1414", id=1414, desc="desc2"> , <Soda::DTO:: Bubble container_id=594, bubble_type="co2", flavor_id=3528, bubble_sid="soda: :bubble:dbid/1421", id=1421, desc="desc3">] 到include <Soda。 :DTO::Bubble container_id=594, bubble_type="co2", flavor_id=3528, bubble_sid="soda: :bubble:dbid/1421", id=1421, desc="desc3">
陣列.include?是否只檢查物件參考而不檢查物件內容?
uj5u.com熱心網友回復:
include? (object) → true or false
如果給定的物件存在于self中,則回傳true(也就是說,如果有任何元素==物件),否則回傳false。
如果你的DTO沒有實作平等運算子==,那么它將使用Object#==,它只比較物件的參考。
要在你的類中添加該運算子:
def ==(物件)
#處理不同的型別
return false unless object.is_a? (Soda::DTO::Bubble)
# 比較內部變數等。
object.container_id == self.container_id
結束。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/307025.html
標籤:
上一篇:<p>我有一個陣列,其中包含哈希值。 <preclass="defaults-code-block"><codeclass="hljslan
下一篇:將陣列值加到哈希值上
