2012-07-23 147 views
0

我採取了以下測試:C#單元測試

[TestMethod] 
public void Index_Get_RetrievesAllContributionsFromRepository() 
{ 
    // Arrange 
    Contributions Contribution1 = GetContributionNamed("Council", 2003); 
    Contributions Contribution2 = GetContributionNamed("Council", 2004); 

    InMemoryContributionRepository repository = new InMemoryContributionRepository(); 
    repository.Add(Contribution1); 
    repository.Add(Contribution2); 
    var controller = GetHomeController(repository); 

    // Act 
    var result = controller.Index(); 

    // Assert 
    var model = (IEnumerable<Contributions>)result.ViewData.Model; 
    CollectionAssert.Contains(model.ToList(), Contribution1); 
    CollectionAssert.Contains(model.ToList(), Contribution2); 
    CollectionAssert.xxxxxx(model.ToList().Count, Contribution1, 2); 
} 

與XXXXXX最後一次測試有試圖檢查Contribution1有2個值,它的作用。哪行代碼執行該測試?

C#新手

+0

有3個參數。你解釋了2.什麼是model.ToList()。在那一行計數意味着什麼? – Euphoric 2012-07-23 09:49:46

回答

5

這聽起來像你只是想:

Assert.AreEqual(2, model.Count()); 

但它聽起來像你更好使用是:

CollectionAssert.AreEquivalent(new[] { Contribution1, Contribution2 }, 
           model.ToList()); 

...這可以取代你所有的三條線。

在這兩種情況下,注意,預期值應該是第一個參數,而實際值應該是第二。

+0

謝謝喬恩。感謝。 – RoRNovice 2012-07-23 10:04:46

1
Assert.AreEqual(model.ToList().Count, 2);