C#单元测试

RoR*_*ice 0 c# testing visual-studio-2010

我正在实施以下测试:

[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);
}
Run Code Online (Sandbox Code Playgroud)

使用xxxxxx进行的最后一次测试是尝试检查是否Contribution1有2个值.请问哪一行代码执行该测试?

c#新手

Jon*_*eet 5

听起来你只是想要:

Assert.AreEqual(2, model.Count());
Run Code Online (Sandbox Code Playgroud)

但听起来你会更好用:

CollectionAssert.AreEquivalent(new[] { Contribution1, Contribution2 },
                               model.ToList());
Run Code Online (Sandbox Code Playgroud)

......这可以取代你所有的三条线.

在这两种情况下都要注意,期望值应该是第一个参数,实际值应该是第二个参数.