2010-09-09 102 views
7

我明白如何模擬接口或虛擬方法調用。但是像TypeMock這樣的框架可以模擬框架中的所有內容。哪些.NET機制被用來提供這樣的功能?如何嘲笑一切?

回答

8

Typemock隔離器例如使用CLR profiler API攔截.NET調用和運行期間改變它們:

Quote

Typemock隔離器使用一個 面向方面的編程設計 創建一個模擬方面。 它在內部使用.NET Framework profiler API來監視應用程序的執行。當CLR加載方法 時,Typemock 隔離器檢索IL並用儀器化的IL代碼替換 。 Typemock 隔離器不會更改您的原始 IL代碼,它只是插入新代碼 ,該代碼調用Typemock Isolator 框架並返回模擬值。

+0

感謝你的回覆。你能推薦一篇關於這個API的好文章嗎? – 2010-09-09 21:30:23

+0

[本文](http://msdn.microsoft.com/en-us/magazine/cc300553.aspx)是一個好的開始。 – 2010-09-09 21:34:48

0

模擬一切都是模擬框架的功能之一。總之模擬一切是嘲笑在一個類的一切,如

  • 模擬依賴對象
  • 非虛擬方法
  • 密封類
  • 靜態方法
  • 靜態類
  • 非公衆會員
  • 非公開類型

JustMock & TypeMock都提供此功能。

實際上,你可以看一些開源的模擬框架,如Moq的框架,易於模擬,犀牛製品等的源代碼

披露:請注意,前提是鏈接是我自己的網站