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を使用した最後のテストでは、Contribution12つの値があるかどうかを確認しようとしています。そのテストを実行するコードの行は何ですか?

c#初心者

4

2 に答える 2

5

それはあなたがちょうど欲しいように聞こえます:

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

しかし、それはあなたがよりよく使うだろうように聞こえます:

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

...これで3行すべてを置き換えることができます。

どちらの場合も、期待値は最初の引数であり、実際の値は2番目の引数である必要があることに注意してください。

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