web-dev-qa-db-ja.com

ASP.Net MVC 4アプリのユニットテスト

これは約20の異なる投稿の複製であることを認識していますが、それらのどれもMVC4に固有のものではなく、実際にすべての質問に答えているのを見たことはありません。これまでのところ、TDDの世界への私の最初の進出は、控えめに言ってもイライラしています。私がやろうとしたことのほとんどは、MVC 4と互換性がないか、文書化が不十分なサードパーティのライブラリを使用しないと不可能に近いようです。

私ができるようにしたいのは、コントローラーアクション、それらが渡しているモデル、およびViewアクションをテストするテストを書くことですモデルを送る。ビューが存在するかどうかをテストしたい、渡されるモデルがビューに適したタイプかどうかをテストしたい。適切に処理されるかどうかをテストしたい。ルートもテストできるようにしたいです。認証フィルターをテストしていますか?

チャンスをほとんど残さないASP.Net MVCを単体テストする方法が必要です。

アクションのモデル出力のテストは十分に簡単に思えますが、ビューのテストはほとんど不可能でした。

だから私の質問のリストはここにあります:

  1. アクションをテストしてアクションの結果を取得したら、必要なビューが存在するかどうかを確認するにはどうすればよいですか?
  2. ルートをテストするにはどうすればよいですか?
  3. ビューが適切に処理されていることを確認するにはどうすればよいですか?
  4. ASP.Net MVC 4の完全なユニットテストの実際の「ベストプラクティス」は何ですか?
  5. フォーム認証を単体テストするにはどうすればよいですか?
  6. アクションフィルターを単体テストするにはどうすればよいですか?

組み込みのVisual Studioテストプロジェクトを使用したいのですが、NUnitを使用する必要がある場合は使用する必要があります。私はそれが適切に行われることを確認する必要があるだけです。

ご回答ありがとうございます。

編集:一部のアセンブリがコンパイルされている.NETのバージョンと互換性がないため、MUnit4アプリでNUnitを動作させることもできませんでした。

60
Ben Lesh
  1. ビューが存在することを確認する
  2. http://haacked.com/archive/2007/12/17/testing-routes-in-asp.net-mvc.aspx/
  3. http://blog.davidebbo.com/2011/06/unit-test-your-mvc-views-using-razor.html
  4. 下記参照
  5. FormsAuthenticationを使用するASP.NET MVCコントローラーを単体テストするにはどうすればよいですか?
  6. ASP.NET MVCでアクションフィルターをテストする方法?

番号。 4:これは難しい質問です。どのようにして徹底的にテストしますか?個人的には、3つの主要なブラウザーと2つの目を除いて、実際にはビューをテストしません。実際に使用せずにWebサイトとそのすべてのコンポーネントをテストすることは難しいからです。 JavaScriptの起動、CSSのスタイル設定があり、ブラウザによって外観が異なります。したがって、私には、サイトの全体的なユーザビリティの一部であるビューを徹底的にテストしているように見えます。財務データの単純なテーブルベースのレポートを開発している場合は、そのデータを徹底的にテストします。あなたの見解が豪華なAjaxサイトのベースである場合は、エクスペリエンスほどHTMLをテストしないでください。それは簡単で簡単な答えではありませんが、許容範囲のカバレッジは常にトレードオフを伴います。

59
Rob Rodi