0

我正在实施以下测试:

[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#新手

4

2 回答 2

5

听起来你只是想要:

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

但听起来你最好使用

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

...这可以取代你所有的三行。

在这两种情况下,请注意预期值应该是第一个参数,而实际值应该是第二个参数。

于 2012-07-23T09:51:19.120 回答
1
Assert.AreEqual(model.ToList().Count, 2);
于 2012-07-23T09:50:03.653 回答