12

わかりました - NancyFx が大好きです。この数行で Web アプリケーションを作成するのは驚くべきことです。

しかし、ユニット レベルで NancyModules をテストするにはどうすればよいでしょうか?

Nancy に付属している優れたテスト フレームワーク(Nancy.Testing on NuGet) を認識していることに注意してください。これは、(ほぼ) アプリケーション スタック全体をテストするための優れた方法を提供します。しかし今、私が NancyModule のコンテンツを TDD 方式で具体化するために使用するユニットレベルのテストを意味します。

ルートはコンストラクターで定義されるため、多くの場合、アクション全体を構成するラムダ式とともに、単体テストからは少し「到達できない」ように感じます。しかし、ルートのアクションをテストする方法について明らかなことを見逃していませんか?

たとえば、この単純なアプリケーションの単体テストはどのようになるでしょうか?

public class ResouceModule : NancyModule 
{
   private IProductRepository _productRepo;

   public ResourceModule(IProductRepository repo) : base("/products") 
   {
        Get["/list"] = parameters => { 
           return View["productList.cshtml", repo.GetAllProducts()];
        };
   }
}

そこを参照してください-今、テストの前に製品コードを書きました... :) テストを開始する方法について何か提案はありますか?

4

2 に答える 2

12

私たちが提供するテストツールを使用して、最初の開発をテストできます。

  • テストの開始時に、テスト対象のモジュールと必要な偽のオブジェクトのみを含むブートストラップを構成します。
  • テストでは、特定のルート (GET /list など) を実行します。繰り返しコードを削除するために、小さなヘルパーが必要になる場合があります。
  • 返された内容をアサート - リクエスト オブジェクトとレスポンス オブジェクト (ヘッダー、Cookie など) へのフル アクセス、HTML ボディのヘルパー、および 1.8 で登場する JSON、XML を処理するためのヘルパー、およびボディ内の文字列応答のみを使用できます。
  • 次のルートに移動し、すすぎ、繰り返します。

モジュールをテストするだけではありませんが、コール スタックを見ると、ルートに到達する前後に多くのことが行われていないため、私の本ではそれほど大きな問題ではありません :-)モジュールを完全に分離してテストしたい場合は、それを自分で構築し、それに応じて個々のルートを突くことができます (それらはモジュール内の単なる辞書です)。

于 2011-09-09T18:01:07.670 に答える
4

Nancy.Testing の一部として、構成可能なブートラッパーを使用して、IoC セットアップを含むセットアップを制御できます。これにより、下位レベルの依存関係なしでモジュールをテストできるようになり、TDD が有効になります。

于 2011-09-09T17:50:39.880 に答える