2011-06-27 168 views
1

我的工作我的第一個ASP .NET MVC項目之前,這一刻我只用Rhino.Mocks桌面應用程序。我可以在MvcContrib.TestHelper中使用Moq嗎?

,所以我決定找出什麼在外地使用它現在已經有一段時間。
閱讀一些讚美Moq後,我決定去用它。
(我喜歡有人稱之爲lambda錯誤和過度使用)。

但是我也聽到了對MvcContrib TestHelper框架的好評,其中似乎對Rhino.Mocks有依賴性。

我需要知道TestHelper是否強制使用Rhino.Mocks對我。我不希望在我的測試將兩種不同的嘲弄框架,所以在情況TestHelper是犀牛特定的,我將不得不決定對

  • 開關Rhino.Mocks爲TestHelper的緣故(傷心,但可能);
  • 放棄TestHelper使用MOQ(不太可能)的緣故。

我真的很希望TestHelper在它的公共API中獨立於Rhino.Mocks,但我不是100%確定的。
有人可以證實嗎?

回答

2

我需要知道是否TestHelper使用強加在我身上Rhino.Mocks

是的,它強加您使用犀牛製品。 TestHelperBuilder類中的所有屬性(如Request,Response,Session,HttpContext等)都與Rhino Mocks一起存在,並等待您對它們寫入期望值。

+0

感謝您的回覆。猜猜我必須堅持犀牛然後.. –

3

我不知道這個時候被改變,但現在TestControllerBuilder接受一個可選的參數IMockFactory<T>。我發現的問題是,如果你不通過,它首先默認爲RhinoMocks,然後默認爲Moq,兩者都是代理。如果您使用StructureMap,就像我一樣,它將始終使用RhinoMocks。我真的希望有一個標誌告訴TestControllerBuilder使用哪一個。

要強制使用起訂量生成器,你可以在一個新IMockFactory<T>類,反映回傳起訂量。在內部,MvcContrib有一個完美的完成這個類,但它不公開。我不確定他們爲什麼不公開它。

而不是創造我自己的實現的IMockFactory<T>的,我選擇了MoqFactoryMoqProxy班深入到MvcContrib碼和複製/麪食到我自己的解決方案,並將其傳遞到TestControllerBuilder。它感覺真的很髒,但它完成了工作,並讓我使用Moq來表達我內心的內容。

相關問題