我目前正在为一项功能编写测试。我需要计算调用事件处理程序的次数。在这个例子中,我想确保永远不会调用委托'failureHandler'。
如果调用了Assert.Fail(),我已经从测试角度实现了我想要的东西。我想要做的是计算代表被调用以在测试的其他部分中使用的次数。
我相信我读到的地方你可以通过财产访问这些信息,但我不记得我在哪里阅读它了!
Action failureHandler =
completed => Assert.Fail("Not all tasks have been completed");
_testObj.TaskCompletedForItems += failureHandler;
答案 0 :(得分:2)
不,没有标准属性......但是你可以很容易地使用lambda表达式来模拟它的事实:
int callCount = 0;
Action handler = () => callCount++;
_testObj.TaskCompletedForItems += handler;
// Do stuff
Assert.AreEqual(expectedCount, callCount);
答案 1 :(得分:2)
您可以使用MOQ,并验证操作被调用的次数:
Mock<Action> mockAction = new Mock<Action>();
Action action = mockAction.Object;
//call action
action();
//verify that it was never called
mockAction.Verify(act => act(), Times.Never());
//or verify that it has been called exactly once
mockAction.Verify(act => act(), Times.Once());