2011-03-15 37 views
8

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

什么其它的DLL,这个DLL行不通的作品,因为我得到一个异常

找到的程序集清单定义不匹配的程序集引用

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

有没有办法引用DLL而不需要publickeytoken?

谢谢

+1

如何:msvcr71d.dll是如此丑陋,即使rundll32.exe说它有一个不好的形象!对?对?我很抱歉... – diceguyd30

回答

13

你不能模拟签署的DLL。 (如果你可以,你会被黑手党雇用...)

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

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

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

+5

用于围绕DLL编写外观的文章 –

+0

您可以用一些技巧来模拟系统DLL,例如PEX可以做到这一点。 –

+0

@remco - 你是指http://research.microsoft.com/en-us/projects/moles/? –