2011-03-15 36 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/? –