SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ASP.NET 3.5 Extensions + ASP.NET MVCフレームワーク

もう一つのASP.NET 「ASP.NET MVC」を知る(後編)

ASP.NET 3.5 Extensions + ASP.NET MVCフレームワーク(2)


  • X ポスト
  • このエントリーをはてなブックマークに追加

ASP.NET MVCにおけるテスト

 前編でも解説したように、ASP.NET MVCの魅力の1つにテストの容易性・親和性というのが挙げられます。前回作成したサンプルアプリケーションに対して、テストプロジェクトを追加します。[ファイル]-[追加]-[新しいプロジェクト]を選択し、テストプロジェクトから[ASP.NET MVC Project Test Template]を選択しましょう。テストの作成手順はVSTSの単体テスト作成と変わりありません。

 実際にサンプルを見てみましょう。

PubsControllerTest.csの一部
 [TestMethod()]
 public void HelloTest()
 {
     // PubsControllerの準備
     PubsController controller = new PubsController();

     // 実行
     ViewResult result = controller.Hello() as ViewResult;

     // 検証
      ViewDataDictionary viewData = result.ViewData;
      Assert.AreEqual("Hello, MVC Framework!", viewData["Hello"]);
            Assert.AreEqual("Titles", viewData["Title"]);
 }

 実行結果は次のとおりです(図7~8)。

図7 HelloTestメソッドのテスト成功時
図7 HelloTestメソッドのテスト成功時
図8 HelloTestメソッドのテスト失敗時
図8 HelloTestメソッドのテスト失敗時

 同様に、URLルーティングに対しても簡単にテストが行えます。しかし、URLルーティングに対するテストでは、HttpContextを利用することになります。本来であれば、さまざまな準備が必要になりますが、サンプルではASP.NET MVCの開発者の一人Stephenさんが、擬似的なHttpContextを作成するFakeHttpContextクラスなどをまとめた「MvcFakes.dll」を自身のBlogで提供しているので、そちらを利用します。

GlobalApplicationTest.csの一部
 [TestMethod()]
 public void RegisterRoutesTest()
 {
     RouteCollection routes = new RouteCollection();
     GlobalApplication application = new GlobalApplication();

     GlobalApplication.RegisterRoutes(routes);

     // 擬似HttpContextを利用してURLルートマッピングの設定
     var context = new FakeHttpContext("~/Pubs/info/MC2222");
     RouteData route = routes.GetRouteData(context);

     // ルートマッピング検証
     Assert.IsNotNull(route, "探してるルートは見つかりませんでした");
     Assert.AreEqual("Pubs", route.Values["controller"],
                     "Pubs controller expected");
     Assert.AreEqual("info", route.Values["action"],
                     "info expected Pubs action");
     Assert.AreEqual("MC2222", route.Values["id"], "2");

 }

 実行結果は次のとおりです(図9~10)。

図9 HelloTestメソッドのテスト成功時
図9 HelloTestメソッドのテスト成功時
図10 HelloTestメソッドのテスト失敗時
図10 HelloTestメソッドのテスト失敗時

 ControllerクラスとURLルーティングに関するテストでは、従来のASP.NETと違い、実際にアプリケーションを実行しなくてもテストを実行することが、確認できました。この点から、従来のASP.NETよりもテスト部分において優れていることがわかっていただけたかと思います。

次のページ
フィルタ機能~その1

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ASP.NET 3.5 Extensions + ASP.NET MVCフレームワーク連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト ナオキ(ナオキ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2888 2008/09/01 18:49

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング