【发布时间】:2011-03-08 19:00:28
【问题描述】:
一个例子 - 我想测试狙击手是否只通知视图添加的项目。
[Test]
public void NotifiesViewOfLoss_IfCloseEventReceivedForSnipedItems()
{
_sniper.AddItem(TestConstants.ItemNo54321);
_sniper.AddItem(TestConstants.ItemNo65432);
_sniper.AuctionClosedFor(TestConstants.ItemNo65432);
_mockView.Verify(view => view.UpdateStatus(TestConstants.ItemNo65432, AuctionSniperStatus.Lost));
_sniper.AuctionClosedFor(TestConstants.ItemNo54321);
_mockView.Verify(view => view.UpdateStatus(TestConstants.ItemNo54321, AuctionSniperStatus.Lost));
_sniper.AuctionClosedFor(7);
// doesn't work
//_mockView.Verify(view => view.UpdateStatus(It.IsAny<int>(), It.IsAny<AuctionSniperStatus>()),
// Times.Never() );
}
Times.Never 行不起作用 - 因为它与之前的调用之一匹配。 我知道还有其他选择:
- 设置一个新的期望抛出,如果被调用(如上所示)
- 比如指定 7 而不是 IsAny()
- 将测试分成 2 个测试
【问题讨论】:
标签: unit-testing moq