2つのオブジェクトはどのようにして同じに見えますが、そうではありませんか?Rubyクラスは同じだと思われますが、等価とは見なされません
コード実行しますpickle_step持っている "モデルを!(所有者).send(関連).should ==モデル!(ターゲット)"
タグで実行(キュウリ--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です。
子孫、祖先などのクラスプロパティの検査は同じであることがわかります。
アイデア?
よう
何かの情報をいただき、ありがとうございます。私はスタックオーバーフローの仕組みについて誤解していました。私は行って、受け入れる答えの事をしました。 – ehsk
クールで、 'self.class == other.class'は' self.class.object_id'と 'other.class.object_id'を比較するべきです - それらをデバッグ/テストで出力し、それらが同じ? – smathy
それらはすべてのシナリオを実行するときに異なりますが、1つのシナリオだけを実行する場合も同じです。 #<モジュール:0x00000105a11fe8>また、self.class.ancestorsとother.class.ancestorsを行うと、いくつかのランダムな番号のように思える異なるモジュール(示しています。たとえばだから、少なくとも私は今、彼らは実際に異なっていることがわかります。先端をありがとう。オブジェクトがまったく同じかどうかを確認するために迅速な方法。 – ehsk