2013-03-20 8 views
9

私は、リスト内のオブジェクトの順序を無視して、オブジェクトのリストを比較したいとオブジェクトのみのプロパティのいくつかを比較し、現在私は、この比較を実行するには、次のコードを使用しています:流暢なアサーションを使ってリストを比較するには?

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) 
    ); 

しかし、これは理想的ではないようです。失敗したときに期待される値からプリントアウトしない場合があります。流暢なアサーションを使ってこの比較を実行するためのメカニズムが組み込まれていますか?

答えて

10

現在はありません。我々はFA2.0の新しいequivalency assertion構文を持っていますが、オブジェクトが正しい順序で表示されるかどうかも確認します。 FA 2.1については、私はそれをサポートしようとしていますが、それがうまくいくかどうかはまだ分かりません。基本的には、コレクションアイテムの背後にあるオブジェクトグラフ全体を、コレクション内の他のすべてのアイテムのオブジェクトグラフと比較する必要があります。確かにそれはむしろ遅いでしょう。

+0

2つ比較してもいいですか?リストは実際に使用してください。 – BraveNewMath

+0

はい、actual.Should()を実行できます。BeEquivalentTo(expected); –

+1

私たちは通常、各オブジェクトをjsonにシリアル化してから文字列比較を使用します。エラー出力はうまく見えます。誰かが新しいプロパティを追加した場合、単体テストを更新する必要はありません –

関連する問題