ASP.NET MVCでのTDD

従来のASP.NETのような形式では、コードビハインドのファイルに記述されたコードの単体テストをどうやって行うか、という問題があった。ASP.NET MVCであれば、MVCを採用している他のWebアプリケーションフレームワークと同じように、ユニットテストを簡単に組み込むことができる。

たとえば、ソリューション作成時に生成されたユニットテスト用のプロジェクトにある、HomeControllerTest.csを見てみよう。その中のIndexメソッドを見ると、次のようになっている。

    // Arrange
    HomeController controller = new HomeController();

    // Act
    ViewResult result = controller.Index() as ViewResult;

    // Assert
    ViewDataDictionary viewData = result.ViewData;
    Assert.AreEqual("Welcome to ASP.NET MVC!", viewData["Message"]);

このコードによってテストしているのは、HomeControllerにアクセスしたときに、ViewDataのMessageというキーの値が、「Welcome to ASP.NET MVC!」になっているかどうか、ということである。

ここでのポイントは、Controllerのクラスが、自分の役割を正しく果たしているかどうかをテストするためのコードが、まったく独立した形で記述できていることである。Viewとの連携までを含めて、全体として正しく動作しているかどうかは別のテストが必要になるが、Controllerだけを単独で簡単にテストできるというのは、従来のASP.NETと比べ、ASP.NET MVCの持つ優位性と言えるだろう。

その他の機能

以上、ASP.NET MVCの基本的な仕組みと使い方を見てきた。

詳細な手順についてはここでは割愛したが、Modelで定義されたクラスの定義を元に、データベースのレコードを追加、検索、更新、削除する処理、いわゆるCRUDを行うページの実装も簡単にできるようになっている。あるいは認証と認可、Ajax処理もサポートされている。他のプログラミング言語でのMVCフレームワークを使用したことがある開発者であれば、少し慣れるだけで一通りのWebアプリケーションを作れるようになるだろう。また、基本クラスライブラリやADO.NET、LINQといった.NET Frameworkの仕組みもそのまま使えるので、従来のASP.NETを使用していた開発者にも使いやすい仕組みになっているはずだ。

最近はWeb上で得られる情報も増えてきたので、ぜひ一度試してみていただきたい。