c# - 您如何访问委托(delegate)被调用的次数?

标签 c# .net unit-testing events delegates

我目前正在为一项功能编写测试。我需要计算一个事件处理程序被调用了多少次。在此示例中,我想确保永远不会调用委托(delegate)“failureHandler”。

通过执行 Assert.Fail()(如果它被调用),我已经从测试的角度实现了我想要的。不过,我想要做的是计算在测试的其他部分调用委托(delegate)的次数。

我相信我在某个地方读到过您可以通过属性访问此信息,但我不记得我是在哪里读到的!

Action failureHandler = 
                completed => Assert.Fail("Not all tasks have been completed");

_testObj.TaskCompletedForItems += failureHandler;

最佳答案

您可以使用 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());

关于c# - 您如何访问委托(delegate)被调用的次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24180075/

相关文章:

c# - 亚音速查询(条件 A 或条件 B)和条件 C

.net - 自动化 W3C 验证

C# 相当于 Java PushbackReader 的 unread()

java - 服务层私有(private)方法

mysql - 在 rails 中生成数据的单元测试中按 created_at 排序

c# - 将 SQL int 转换为 C# 字符串

c# - 在永远不会重新分配字段的情况下,复制方法主体中字段的引用以读取它有什么好处?

C#本地化

c# - 如何在静态类中覆盖 ToString?

python - 如何在没有类的情况下为python中的函数编写测试函数