1

私は最初の ASP .NET MVC プロジェクトに取り組んでおり、この瞬間まではデスクトップ アプリケーションに Rhino.Mocks しか使用していませんでした。

久しぶりなので、今現場で何が使われているのか調べてみることにしました。Moq
の賞賛を読んだ後、私はそれを使うことにしました。 (ラムダの誤用や乱用と呼ばれるものが大好きです)。

しかし、Rhino.Mocksに依存しているように見えるMvcContrib TestHelperフレームワークに対する賞賛も聞きました。

TestHelper が Rhino.Mocks の使用を私に強制するかどうかを知る必要があります。テストで 2 つの異なるモック フレームワークを混在させたくないので、TestHelper が Rhino 固有の場合は、どちらかを決定する必要があります。

  • TestHelper のために Rhino.Mocks に切り替えます (悲しいですが可能性があります)。
  • Moq を使用するために TestHelper を放棄します (ありそうにありません)。

TestHelper が公開 API で Rhino.Mocks から独立していることを心から願っていますが、100% 確実ではありません。
誰かがそれを(否定)確認できますか?

4

2 に答える 2

3

これがいつ変更されたのかはわかりませんが、TestControllerBuilder はオプションのIMockFactory<T>引数を取るようになりました。これで私が見つけた問題は、1つを渡さない場合、デフォルトで最初にRhinoMocksに、次にMoqに、両方ともプロキシとして設定されることです。私のように StructureMap を使用している場合は、常に RhinoMocks を使用します。TestControllerBuilder にどちらを使用するかを伝える何らかのフラグがあればいいのにと思います。

ビルダーに Moq の使用を強制するには、Moq にIMockFactory<T>反映される新しいクラスを渡すことができます。内部的には、MvcContrib にはこれを完全に実行するクラスがありますが、パブリックにアクセスすることはできません。なぜ彼らがそれを公開しなかったのか私にはわかりません。

の独自の実装を作成する代わりにIMockFactory<T>、MvcContrib コードを掘り下げ、MoqFactoryおよびMoqProxyクラスをコピーして独自のソリューションに貼り付け、それらを TestControllerBuilder に渡すことにしました。それは本当に汚いと感じますが、仕事をやり遂げ、Moqを心ゆくまで使うことができます.

于 2012-06-29T17:15:24.910 に答える
2

TestHelper が Rhino.Mocks の使用を強制するかどうかを知る必要があります

はい、Rhino モックを使用する必要があります。Request、Response、Session、HttpContext など、TestHelperBuilder クラスのすべてのプロパティは、Rhino モックでスタブ化されており、期待値を書き込むのを待っています。

于 2011-06-28T06:18:51.043 に答える