20

リスト内のオブジェクトの順序を無視し、オブジェクト内の一部のプロパティのみを比較して、オブジェクトのリストを比較したいのですが、現在、次のコードを使用してこの比較を実行しています。

actual.Should().NotBeNull();
actual.Count.Should().Be(expected.Count);
//compare ignoring order
foreach (var exp in expected)
    actual.Should().Contain(act =>
        act.IndividualId.Equals(exp.IndividualId)
        && act.Email.Equals(exp.Email)
        && act.FirstName.Equals(exp.FirstName)
        && act.LastName.Equals(exp.LastName)
    );

ただし、これは理想的とは言えません。障害が発生した場合、期待値が出力されないからです。流暢なアサーションを使用してこの比較を実行する組み込みのメカニズムはありますか?

4

1 に答える 1

15

今じゃない。今はだめなの。FA 2.0の新しい同等性アサーション構文がありますが、オブジェクトが正しい順序で表示されるかどうかも検証されます。FA 2.1 ではサポートしようとしていますが、うまくいくかどうかはまだわかりません。これは基本的に、コレクション アイテムの背後にあるオブジェクト グラフ全体を、コレクション内の他のすべてのアイテムのオブジェクト グラフと比較する必要があることを意味します。確かにかなり遅くなります。

于 2013-03-20T06:06:06.810 に答える