私はクラスを持っています。それを と呼びましょうFoo
。これは値型であり、したがってEquals
/GetHashCode()
メソッドをオーバーライドします。別のテスト フィクスチャで、同等性のために使用されるプロパティだけでなく、Foo のすべてのプロパティが適切に設定されていることを確認したいと思います。このため、私のテスト アサーションShouldBeEquivalentTo
では、「オブジェクトのタイプに関係なく、両方のオブジェクト グラフに同じ値を持つ同じ名前のプロパティがある」場合に、ドキュメントが示唆するメソッドを具体的に使用します。
ただし、メソッドをShouldBeEquivalentTo
呼び出し、真の結果を取得してから、約束Foo.Equals
されたリフレクション ベースのプロパティ マッチングを短絡するように見えます。ShouldBeEquivalentTo
これは予想される動作ですか?そうである場合、FA ソースを調べたところ、この動作を変更する簡単な方法は見つかりませんでした (IEquivalencyStep
は内部で宣言されています)。これを回避する他の方法はありますか?
編集: Dennis: はい、比較している 2 つのオブジェクトは同じタイプです。要約すると、私はクラス Foo をオーバーライドEquals
しましたが、FA がこの等価概念を単体テストに使用することを望んでいません。