私のASP.NET MVC3(新)開発では、MvcContrib TestHelper(およびRhino Mocks)の依存関係を作成したくない場合、重要な価値を提供していません。だから私はこのヘルパーの現在の状態を理解しようとしています。MvcContrib TestHelperを評価する
- のHttpContext
- のHttpRequest
- のHttpResponse
- のHttpSession
- フォーム
- TempDataを
- のQueryString: はTestHelperは、以下のコントローラの依存関係のために偽物を生成することを言いますMVC1とMVC2については
- ApplicationPath
- PathInfoを
これはとても便利だった私はなぜ見ることができます。しかし、MVC3ではTestHelperの関連性が低くなっているかもしれない改善されたテスト "seams"が導入され始めました。たとえば、MVC3 Request
とResponse
コントローラプロパティは、HttpRequestとHttpResponseの分離可能/注入可能バージョンであるように特別に設計されています。
私はまだMVC3のテスト容易化の進歩を模索しているので、上記の他の依存性のどれがMVC3の分離(または注入性)を改善したか知りたいと思います。また、MVC3でTestHelperを使用している場合と使用していない場合の上記の依存関係のための模造品(スタブ/モック)を使用したテストを作成するコードのサンプルを見たいと思っています。
TestHelperを使用する場合と使用しない場合のテストライターの違いが十分に小さい場合、私はTestHelperを避けることをお勧めします。これは私が好きな分離フレームワーク(MOQまたはNSubstitute)を自由に選択できることを意味します。
最終的に、MVC3リリースではHttpRequestとHttpResponseの特定の改良されたテスト容易性の手順を実行したが、他の上に挙げた依存性の問題については驚いた。 TestHelperを使わなくても上記の項目がどのように分離されているかを誰かが分かりやすく伝えられることを願っています。
私は分離フレームワークを使用することに反対していません。私の主な関心事は、MvcContrib TestHelperが私のフレームワークの選択肢を取り除くことです。例えばMOQを好む場合でも、私はRhino Mocksを使わなければなりません。 –
@BrentArias、はい、Rhino Mockが必要です。あなたがMoqを好むなら、手作業ですべての依存関係をモックしてください。あなたはまだ単体テストを行うことができます。私は、MvcContrib.TestHelperの素晴らしい構文と、それが提供するすべての拡張メソッドが好きです。しかし、もしあなたが好きならMoqでも同じことを達成することができます。少しだけ作業しなければなりません。 Web上には、Moq(HttpContextBase、HttpRequestBase、HttpResponseBase、...)を使用してこれらの一般的な抽象化を模倣する方法を説明する多数の記事があります。 –