ASP.NET MVC 3のウェブアプリにはいくつかのコンポーネントがある。モデル、コントローラ、ルートハンドラ、ビュー、htmlヘルパー、クライアントサイドのコードなどだ。これらのほとんどは単体テストが実施でき、一部は結合テストが必要だ。この記事ではASP.NET MVC 3のテストをメンテナンスしやすく、動作不良が起き難くする方法を紹介したい。
下記がその方法だ。
- アクションに対してはMvcScaffoldingを使って単体テストの準備ができる。
- ビューにたくさんのロジックを書くのではなくカスタムのhtmlヘルパーを使う。htmlヘルパーは簡単にテストできる。また、カスタムhtmlヘルパーをテストするときは、htmlをハードコードしないようにする。
- SpecflowのようなBDDフレームワークを使って受け入れテストを記述する。
- ルーティングテーブルの上位に新しいルートを追加すると既存のルートがおかしくなることが多い。これを避けるためにルーティングテーブルに対して単体テストをする。
- ビューをコンパイルする。厳密に言えばこれは単体テストではないが、実行時にしか見つからないバグを見つけるには便利だ。
- UIがあまり変更されないのであれば、テストするのにWaTiNを使う。また、Page Objectsを使ってUI設計の変更を調整することで結合テストが柔軟にできる。
- JasmineのようなJavaScriptのテストフレームワークを使って、JavaScriptをテストする。
他にもASP.NET MVCアプリケーションのテスト方法があれば、教えていただきたい。