我們已經在幾個類的單元測試中使用Moles取得了一些成功,這些類嚴重依賴於不能被模擬的框架對象。然而,我們遇到了一些System.Threading.ManualResetEvent
和System.Threading.AutoResetEvent
的障礙,因爲莫名其妙的原因,這似乎抵制了莫爾斯。更具體地說,System.Threading.Moles.MManualResetEvent.AllInstances.
沒有提供我們可以設置委託的方法。 System.Threading.Thread
,System.Threading.Mutex
和System.Threading.ManualResetEventSlim
都具有痣能力,這似乎表明支持應該可用;有誰知道它爲什麼不是,或者我們做錯了什麼?痣和System.Threading.ManualResetEvent
2
A
回答
1
這是不是真的回答這個問題,但您可能需要使用下面的,流行的技術用於嘲諷「unmockable」對象:定義一個接口,說IManualResetEvent
,包含必要的方法和ManualResetEvent
性能,以及適配器類,ManualResetEventAdapter
,執行IManualResetEvent
幷包裝實際ManualResetEvent
。然後,在您的應用程序中隨處使用IManualResetEvent
。如果您已經使用依賴注入框架,這非常方便,因爲您可以指定始終應將ManualResetEventAdapter
傳遞給需要IManualResetEvent
的類。
相關問題
- 1. 痣和AppSettingsReader?
- 2. 痣和System.Windows.Forms
- 3. 痣和內部類
- 4. 痣0.94.51023.0和NCover 1.5.8
- 5. NUnit和痣錯誤
- 6. 痣和SharePoint行爲類型
- 7. 痣和重構代碼
- 8. Pex和痣與MVC 3?
- 9. NCover 1.5.8與痣/ Pex和NUnit
- 10. MVC和痣測試項目
- 11. 痣與.net 3.5
- 12. 如何痣SPContext.Current.Site.Url
- 13. 痣和nUnit一起工作嗎?
- 14. Pex和痣用於商業目的?
- 15. 使用文件licenses.licx痣和許可
- 16. Linq的痣加入
- 17. 調試問題痣
- 18. 沒有Pex的痣?
- 19. 如何去痣SPGroupCollection
- 20. 未能就HOSTTYPE(「痣」)
- 21. 痣模擬索引屬性
- 22. 生成一個痣存根
- 23. Pex&痣 - 依賴注射
- 24. 找不到關鍵的'痣'
- 25. 我可以設置對用痣產生的痣類型的期望嗎?
- 26. 您如何使用痣來查詢EntityFramework 4.1中的數據庫痣DbContext?
- 27. 使用的Pex和痣的一種非PUT測試
- 28. 痣的例子不工作從Pex和鼴鼠的網站
- 29. 構建服務器上的痣和存根
- 30. 微軟莫爾斯不生成痣和行爲集會
同意。對於這種情況,您應該使用存根。問題在於這些組件不在應用程序的控制之下,因此不能通過Moles包裝組件繞道。它們不能繞道,因爲這些是由操作系統或其他系統(如IIS)處理的進程。 – 2012-01-05 16:59:26