Ruby类似乎是相同的但不被认为是相同的

时间:2011-07-14 16:06:06

标签: ruby-on-rails class comparison equality mongodb

两个物体如何看似相同却不相同?

有pickle_step运行代码“model!(owner).send(association).should == model!(target)”

在标签(黄瓜--tags @thisonescenario)中运行时,所有者和目标是相同的,测试通过。

当与其他场景(黄瓜)一起运行时,所有者和目标不一样。

经过检查(rdebug)后,代码说这些类虽然看起来确实不一样,但并不相同。黄瓜步骤的输出如下:

  expected: #<Content _id: content_1, _type: nil>
       got: #<Content _id: content_1, _type: nil> (using ==)
  Diff: (RSpec::Expectations::ExpectationNotMetError)

注意:==由Mongo库重载,代码如下:

def ==(other)
  self.class == other.class &&
  attributes["_id"] == other.attributes["_id"]
end

_id比较是真的。 self.class == other.class为false。

检查类属性(如后代,祖先等)表明它们是相同的。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果使用===而不是==来比较类名?

类似

other === self  && ...