46

C# で FluentAssertions を使用して 2 つのリストの等価性を確立しようとしていますが、ここでは 2 つのことが重要です。

  1. 要素は、参照ではなく保持する値によって比較されます (つまり、等しい、等しくない)
  2. リスト内の要素の順序は重要です

FluentAssertions (または NUnit) にこれを行う関数はありませんか?

乾杯!

4

8 に答える 8

13

ここでゲームに遅れますが、私はこれのFluent Assertionsバージョンをここで使用します:

actualRows.Should().BeEquivalentTo(expectedRows,options => options.WithStrictOrdering());

すべてのプロパティのすべての値が同等かどうかをチェックします。このオプションを使用すると、順序が重要になります。順序が問題にならない場合は、options パラメータを省略します。これにより、1 つのコレクションの項目が別のコレクションのどこかに存在することが保証されます。これが誰かを助けることを願っています

于 2017-03-14T15:22:42.130 に答える
6

私はあなたができると思います:

myObject.List.SequenceEqual(myOtherObject.ListToCompare).Should().BeTrue();

これは、使用時にリスト内の要素が等しい場合にのみ機能しますObject.Equal(element1, element2)

そうでない場合は、リスト内のオブジェクトに対して独自の EqualityComparer を実装してから、次を使用する必要があります。

myObject.List.SequenceEqual(myOtherObject.ListToCompare, myEqualityComparer)
             .Should().BeTrue();
于 2014-10-10T09:43:02.863 に答える