模拟Microsoft DLL

时间:2011-03-15 19:09:12

标签: c# .net dll assemblies mocking

我有一个引用Microsoft DLL(Exchange Web服务)的应用程序。在我的单元测试中,我想用Mock替换Microsoft DLL。

什么适用于其他DLL,不能使用此DLL,因为我得到一个异常

  

找到的程序集的清单定义与程序集引用

不匹配

我验证它具有相同的程序集版本,但我看到Microsoft DLL是以数字方式签名的,因此它具有PublicKeyToken。这可能是我的应用程序正在寻找的吗?一个类似签名的DLL?

有没有一种方法可以在不需要publickeytoken的情况下引用DLL?

由于

1 个答案:

答案 0 :(得分:13)

您无法模拟已签名的DLL。 (如果你能,你将被黑手党雇用......)

模拟访问此dll中代码的代码。

创建一个Facade(如果你没有),它包装了对Exchange dll中方法的访问。然后在您的测试中,您可以提供模拟外观。

通过外观/包装器屏蔽代码与任何第三方代码(程序集,Web服务,控件)是一种很好的设计实践。如果第三方代码发生变化,即最小化影响风险,即。升级到较新版本的dll(所需的更改只会影响外观)并帮助进行测试。