2013-04-22 3 views
7

メソッドのコレクション出力を検証するテストがあります。試験のこの変化は、渡し:FluentAssertions ShouldBeEquivalentTo()とShould()。BeEquivalentTo()

[TestMethod, TestCategory("BVT")] 
    public void TheStatusesAreReturned() 
    { 
     var expectedUnprocessedStatuses = new List<FileUploadStatus> 
      { 
       FileUploadStatus.InProcess, 
       FileUploadStatus.Pending, 
      }; 

     Sut.GetUnprocessedStatuses() 
      .Should() 
      .BeEquivalentTo(expectedUnprocessedStatuses); 
    } 

試験のこの変化は、「[0]インプロセスであることが期待アイテムが、保留を発見した」エラーで失敗:

明らか
[TestMethod, TestCategory("BVT")] 
    public void TheStatusesAreReturned2() 
    { 
     var expectedUnprocessedStatuses = new List<FileUploadStatus> 
      { 
       FileUploadStatus.InProcess, 
       FileUploadStatus.Pending, 
      }; 

     Sut.GetUnprocessedStatuses() 
      .ShouldBeEquivalentTo(expectedUnprocessedStatuses); 
    } 

ShouldBeEquivalentTo心配をコレクションアイテムの注文についてはBeEquivalentToは表示されません。なぜ2つの方法で同値性の概念が異なるのですか?

答えて

10

あなたは正しいですか? BeEquivalentTo()は、Equals()の各実装を使用して等価性を検証しており、バージョン1以来存在しています.FA 2.0で導入された新しいShouldBeEquivalentTo()は、構造の詳細な比較を行い、 。 2.1については、デフォルトでコレクションの同等性に似ているように動作を変更します。

+1

[OK]を更新します。私はShould()を使います。BeEquivalentTo()かなりです! –

+1

これは古い投稿ですが、 'ShouldBeEquivalentTo'はv2.1以降のコレクション内のアイテムの順序を無視します。 –

関連する問題