兩個物體怎麼可能是相同的但不是?Ruby類似乎是相同的,但並不相同
有運行代碼pickle_step 「的典範!(老闆)。發送(協會)。應該==模型!(目標)」
當一個標籤(黃瓜--tags @thisonescenario)運行,所有者和目標是相同的,測試通過。
當運行其餘場景(黃瓜)時,所有者和目標不一樣。
經過檢查(rdebug)後,代碼表示這些類雖然看起來好像不一樣。黃瓜步驟的輸出如下:
expected: #<Content _id: content_1, _type: nil>
got: #<Content _id: content_1, _type: nil> (using ==)
Diff: (RSpec::Expectations::ExpectationNotMetError)
注:==重載通過蒙戈庫以下代碼:
def ==(other)
self.class == other.class &&
attributes["_id"] == other.attributes["_id"]
end
的_id比較爲真。 self.class == other.class是錯誤的。
檢查類屬性,如後代,祖先等顯示它們是相同的。
任何想法?
謝謝你的信息。這是我對堆棧溢出如何工作的一個誤解。我已經經歷了並接受了答案。 – ehsk
很酷,現在'self.class == other.class'應該將'self.class.object_id'與'other.class.object_id'進行比較 - 你可以在調試/測試中輸出它們,看看它們是否是相同? – smathy
Ya。在運行所有場景時這些不同,但只運行一種場景時情況相同。另外,做一個self.class.ancestors和other.class.ancestors會顯示一個不同的模塊(這看起來像一些隨機ID:例如,#),所以至少我現在可以看到它們實際上是不同的。感謝提示。更快速的方式來看看對象是否完全相同。 –
ehsk