如何在C#中测试COM依赖对象

Iña*_*oro 5 c# tdd moq

我试图用一个依赖于COM接口的对象做TDD.我虽然在进行开发测试时嘲笑COM接口,但在集成测试中做到了.

但是,我无法模拟COM接口,我尝试使用Moq,它会引发异常:

System.TypeLoadException未被用户代码处理Message =无法从程序集'DynamicProxyGenAssembly2,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null'加载类型'Castle.Proxies.iTunesAppProxy'.该类型被标记为符合类型等效的条件,但它具有通用参数,或者它不是结构,COM导入的接口,枚举或委托

是否可以与其他框架一起使用?你如何使用COM依赖对象进行TDD?

在此先感谢!或代表

小智 5

对于包含COM接口的程序集,尝试将"嵌入互操作类型"设置为FALSE.


Gut*_*ter 2

我建议您拥有 COM 对象的接口,这就是依赖倒置原则发挥作用的地方。

如果您无权访问源代码,则必须创建自己的抽象来包装 COM 对象,否则您的代码中将会有第三方调用。

[编辑]

现在抽象应该可以被嘲笑了。包装器的实际实现将把 COM 对象作为HAS-A关系。

然后您将需要对实施进行集成测试。

您需要将 COM 对象本身视为类似于数据库、图形渲染引擎或 Web 服务的东西。