NavigationライブラリによりASP.NET Webフォームのテストが容易

1622 ワード

Navigationは、CRUD[1]の論理をバックコードファイルから分離することにより、ASP.NET Webフォームはテストしやすい.Graham Mendickの記事「Navigationによるユニットテスト」では、いくつかの関連機能と、ユニットテストの作成方法について説明しています.
このライブラリは何をしていますか.それは
  • コントロールは、個別のクラスにあるコントローラメソッドにバインドされます.
  • ナビバインディング
  • aspxページにあるすべてのタグ.たとえば、FormViewコントロールをコントローラメソッドにバインドするタグは、次のようになります.

    <asp:FormView ID="Question" runat="server" DataSourceID="QuestionDataSource" DefaultMode="Edit">
    <EditItemTemplate>
    </EditItemTemplate>
    </asp:FormView>
    <asp:ObjectDataSource ID="QuestionDataSource" runat="server" SelectMethod="GetQuestion" UpdateMethod="UpdateQuestion" TypeName="Survey.SurveyController" DataObjectTypeName="Survey.Question" />


    ここで、GetQuestionおよびUpdateQuestionは、SurveyControllerという外部クラスで実装されたコントローラメソッドであり、コントロールに直接アクセスするのではなく、Navigationライブラリを介してデータを渡す.Survey.Questionは、この例で使用されるビューモデル(ViewModel)を参照してデータを送信する.
    ユニットテストを簡略化できるのはなぜですか?現在、ビジネスロジックは、Web固有の動作を持たないPOCO[2]クラスに単独で存在するためである.テストを容易にすることができます詳細については、この文書を参照してください.
    InfoQで説明したように、WebForms 4.5はmodel binders(モデルコンパイラ)を取得して箱を開けて使用する(out-of-the-box)--しかし、このライブラリはコントローラメソッドを別のクラスに配置することを許可し、後置コードファイルの代わりにすることができ、これはテスト性と再利用性にとってより良いようだ.興味があれば、Navigation NerdDinnerトレーニングコードをダウンロードできます.
    訳注
    [1]CRUD、すなわちCreate、Read、Update、Deleteの頭文字の略語であり、データベース操作における作成、読み取り、更新、削除を指す.
    [2]POCO、すなわちPlain Old CLR Objectの略で、従来の単純CLR(共通言語実行ライブラリ)オブジェクト、詳細はウィキペディアを参照してください.
    原文:Navigation Makes ASP.NET WebForms More Testable