2010-06-14 56 views

回答

15

我實際使用Moq 痣在同一個測試項目中。兩者都有優勢,我會在適當的地方使用。一般來說,我使用Moq進行標準的AAA測試和驗證,而Moles是其他方面無法模仿的東西的「大槍」,如擴展方法調用等。

我喜歡這種安排,因爲每個測試都可以像儘管模擬設置在測試之間可能會有很大差異,但儘可能簡單明智。

+2

+1重要的一點,兩者可以一起使用 - 你只需要仔細選擇你的'第一度假勝地'。 – 2010-06-21 09:00:26

+1

將很高興看到這樣的例子,您的工作流中的任何博客文章?我覺得TDD tbh – roundcrisis 2010-07-09 11:58:24

+1

有一點不自然,你應該舉個例子 - 我目前沒有一個例子,但我會環顧四周,看看我的代碼是否可以變成一個。 – ZeroBugBounce 2010-07-15 01:56:55

3

鼴鼠經常與TypeMock進行比較/對比,因爲它提供Moq和/或RhinoMocks的甜蜜點以外的一套設施。

您在選擇時需要考慮的主要問題是您是否希望保持測試技術相對低技術含量或參與更高級別的技術欺騙。這很大程度上取決於你在做什麼 - 你已經標記了ASP.NET而不是MVC,這表明它可能確實與你有關。

看一看this Dimecasts.net video有一個很好的概述。

+0

我正在使用ASP.NET MVC。我更新了標籤。 – user300981 2010-06-15 02:45:43

+0

@ bobsmith123:在這種情況下,我個人不會看到使用更重量級嘲諷框架的理由 - 我會推遲在這樣的炮兵中拉直到必要的時候。使用Pex是一個單獨的決定,但應該獨立於你選擇的嘲諷框架。你爲什麼用Pex標記q,然後不提及它 - 你是否有興趣使用它/你問他們是花生醬還是果凍/你認爲它是從莫爾斯不可分割的嗎? – 2010-06-15 07:37:17

5

鼴鼠被設計成與Pex的白盒分析高效工作。所有其他模擬框架通常會產生大量開銷。

Moles提供了一個簡單的價值主張:用代理替換任何.NET方法。按照設計,Moles不像其他框架那樣提供任何API來表達「驗證」。決定這個決定是否適合你,真的取決於你。

如果您需要使用內部構造函數處理依賴於硬編碼靜態方法或密封類型的(遺留)代碼,Moles可以幫助您處理這些情況。

如果您有接口和很好的組件化代碼,Moles還會生成細長的存根,即接口實現,您可以使用該分析器。

+0

+1如果您想查看在莫爾斯中調用某個方法的次數,您必須放入自己的計數器並讓委託調用原始方法(如果需要)。與'Times.Once'和其他一些框架提供的方法(如Moq)相比。 – Pat 2010-08-11 21:06:27