我一直在尋找ASP.NET的幾個Mocking框架,並遇到了微軟莫爾斯。這似乎是微軟研究小組的一部分,他想知道如果有人在這裏選擇了Moles而不是其他成熟的Mocking框架,比如Moq。爲什麼我會選擇Moles作爲我的嘲諷框架?
回答
我實際使用Moq 和痣在同一個測試項目中。兩者都有優勢,我會在適當的地方使用。一般來說,我使用Moq進行標準的AAA測試和驗證,而Moles是其他方面無法模仿的東西的「大槍」,如擴展方法調用等。
我喜歡這種安排,因爲每個測試都可以像儘管模擬設置在測試之間可能會有很大差異,但儘可能簡單明智。
鼴鼠經常與TypeMock進行比較/對比,因爲它提供Moq和/或RhinoMocks的甜蜜點以外的一套設施。
您在選擇時需要考慮的主要問題是您是否希望保持測試技術相對低技術含量或參與更高級別的技術欺騙。這很大程度上取決於你在做什麼 - 你已經標記了ASP.NET而不是MVC,這表明它可能確實與你有關。
看一看this Dimecasts.net video有一個很好的概述。
我正在使用ASP.NET MVC。我更新了標籤。 – user300981 2010-06-15 02:45:43
@ bobsmith123:在這種情況下,我個人不會看到使用更重量級嘲諷框架的理由 - 我會推遲在這樣的炮兵中拉直到必要的時候。使用Pex是一個單獨的決定,但應該獨立於你選擇的嘲諷框架。你爲什麼用Pex標記q,然後不提及它 - 你是否有興趣使用它/你問他們是花生醬還是果凍/你認爲它是從莫爾斯不可分割的嗎? – 2010-06-15 07:37:17
鼴鼠被設計成與Pex的白盒分析高效工作。所有其他模擬框架通常會產生大量開銷。
Moles提供了一個簡單的價值主張:用代理替換任何.NET方法。按照設計,Moles不像其他框架那樣提供任何API來表達「驗證」。決定這個決定是否適合你,真的取決於你。
如果您需要使用內部構造函數處理依賴於硬編碼靜態方法或密封類型的(遺留)代碼,Moles可以幫助您處理這些情況。
如果您有接口和很好的組件化代碼,Moles還會生成細長的存根,即接口實現,您可以使用該分析器。
+1如果您想查看在莫爾斯中調用某個方法的次數,您必須放入自己的計數器並讓委託調用原始方法(如果需要)。與'Times.Once'和其他一些框架提供的方法(如Moq)相比。 – Pat 2010-08-11 21:06:27
- 1. 關於嘲諷框架
- 2. 嘲諷實體框架
- 3. 爲什麼我們需要嘲笑框架?
- 4. IIS7:爲什麼我不能選擇v3.5 .net框架?
- 5. Mocha優於RSpec內置嘲諷框架的優勢是什麼?
- 6. 爲什麼我UIPickerView選擇
- 7. 嘲諷「System.Console行爲
- 8. 嘲諷會議
- 9. rspec mocking與其他嘲諷框架有什麼優缺點?
- 10. 爲什麼我的框架是空的?
- 11. 爲什麼我的動作不會響應選擇器?
- 12. 嘲諷實體框架給了我對象沒有設置到
- 13. 爲什麼我的多重選擇與選擇不工作?
- 14. 嘲笑框架與功能測試,爲什麼要嘲笑?
- 15. mysqli的嘲諷行爲bind_result
- 16. 與實體框架嘲諷庫
- 17. Javascript嘲諷框架 - 傑克例子
- 18. Boost ::測試和嘲諷框架
- 19. MVC使用嘲諷框架(Moq)測試
- 20. 模擬框架,支持以委託爲參數嘲諷方法
- 21. 嘲笑SqlDataAdaptor時,爲什麼Moles沒有返回「moled」DataSet?
- 22. 爲什麼我要使用PHP框架
- 23. 爲什麼我的選項不會附加到所有選擇
- 24. 爲什麼實體框架會丟失我的索引?
- 25. 嘲諷迭代行爲
- 26. 嘲諷預期爲代表
- 27. 爲什麼我的選擇框在添加新選擇框後重置?
- 28. 爲什麼我應該嘲笑?
- 29. 嘲笑框架中的未來嘲諷概念
- 30. 爲什麼我得到一個黑色的框架,而不是選擇器?
+1重要的一點,兩者可以一起使用 - 你只需要仔細選擇你的'第一度假勝地'。 – 2010-06-21 09:00:26
將很高興看到這樣的例子,您的工作流中的任何博客文章?我覺得TDD tbh – roundcrisis 2010-07-09 11:58:24
有一點不自然,你應該舉個例子 - 我目前沒有一個例子,但我會環顧四周,看看我的代碼是否可以變成一個。 – ZeroBugBounce 2010-07-15 01:56:55