1
14
moq通过检测对事件内部方法的调用来“截获”事件。这些方法被命名为
如果上述事件是在一个接口上定义为moq'd的,那么将使用以下代码引发该事件:
由于在C中不可能直接引用事件,因此MOQ会截获模拟和测试上的所有方法调用,以查看调用是否要添加事件处理程序(在上面的情况下,会添加一个空处理程序)。如果是这样,就可以间接地获得一个引用作为方法的“目标”。
MOQ使用反射作为以名称开头的方法检测事件处理程序方法
在该示例中,将调用被截取的方法
但是,对于在互操作中定义的接口,这似乎不是完全正确的,尽管事件处理程序方法的名称以开头
这可以通过以下nunit测试显示(以您的示例为例):
此外,无法创建继承From Interop接口以解决问题的接口,因为它还将继承已封送的
此问题在这里的MoQ问题跟踪程序中报告: http://code.google.com/p/moq/issues/detail?id=226 更新:
该问题已在MoQ 4.0中得到解决(2011年8月发布)。 |
2
-1
你能从第三方重新定义COM接口并与MOQ一起使用吗? 似乎您的意图是moq消除外部依赖性,而moq没有很好地处理ComInterop程序集,您应该能够打开Reflector并从interop程序集中提取您想要的任何接口定义,定义模拟并运行单元测试。 |
Developer · 使用MOQ嵌套类和接口C的单元测试# 7 年前 |
Graeme · 看看有什么传给了一个Mock? 7 年前 |
erexo · Moq模拟。Of<Obj>vs new Obj(); 7 年前 |
Dede · Moq方法调用序列比较 7 年前 |
filur · 管理复杂单元测试模拟数据 7 年前 |