2012-07-23 146 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);