2013-04-22 21 views
7

Bir yöntemin koleksiyon çıktısını doğrulayan bir sınama var.FluentAssertions ShouldBeEquivalentTo() versus Should() BeEquivalentTo()

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

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

testin bu varyasyonu hata ile başarısız "Beklenen ürün [0] InProcess olmak ancak Beklemede bulunan": testin bu varyasyonu geçer

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

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

Açıkça, ShouldBeEquivalentTo bakımları koleksiyon öğesi siparişi hakkında, oysa BeEquivalentTo bunu yapmaz. Eşdeğerlik kavramı neden 2 yöntem arasında farklıdır?

cevap

10

Haklısınız. Gerek(). BeEquivalentTo(), eşdeğerliği doğrulamak için tek tek öğeleri Equals() uygulamasını kullanıyor ve 1. sürümden beri var. FA 2.0'da tanıtılan yeni ShouldBeEquivalentTo(), derinlemesine bir yapısal karşılaştırma yapıyor ve ayrıca herhangi bir farklılık hakkında raporlama yapıyor . 2.1 için, davranışı varsayılan olarak

+1

Tamam olarak koleksiyon eşdeğeri gibi değiştireceğim. Güncellemeyi dört gözle bekliyorum. Should(). BeEquivalentTo() kullanıyorum birazcık! –

+1

Bu eski bir gönderidir, ancak 'ShouldBeEquivalentTo', v2.1'den beri koleksiyondaki öğelerin sırasını dikkate almayacaktır. –

İlgili konular