NancyFXは、NancyアプリケーションをテストするためのNancy.Testingライブラリを提供します。これは、NuGetを使用してアプリケーションに追加できます。 最初のアプリケーションでソリューションにテストプロジェクトを追加しましょう(この例では、便宜上MSTestフレームワークを使用します。このフレームワークは、人件費をかけずにnUnitまたは他のテストフレームワークに簡単に置き換えることができます。 )
次に、テストプロジェクトへのリンクをテストプロジェクトに追加します。
次に、NuGetパッケージマネージャーを実行し、Nancy.Testingライブラリをプロジェクトに追加します。
IRootPathProviderインターフェイスを実装するクラスをテストプロジェクトに追加する必要があります。これは、MSTestフレームワークと組み合わせてNancyFXテストを実行するときに発生するエラーが原因であることを予約します。 nUnitフレームワークを使用する場合、このクラスを追加する必要はありません。 そのため、唯一のメソッドがテストプロジェクトへの絶対パスを返すTestRootPathProviderを追加します。 プロバイダーコードは次のようになります。
using Nancy; namespace NancyTestProject { public class TestRootPathProvider : IRootPathProvider { public string GetRootPath() { return @"C:\......\GitHub\NancyFxApplication\NancyFxApplication"; } } }
次に、プロジェクトに新しいテストを追加します。 ブートストラップパラメーターでは、テストするモジュールを指定する必要があります。また、以前に決定したテスト済みプロジェクトへのパスのプロバイダーも指定する必要があります。 次に、テストコードで、アプリケーションを呼び出すことができるBrowserクラスのインスタンスを作成します。 これに検証ユニットが続き、アサーションを使用してモジュールの正しい動作を検証します。
using Microsoft.VisualStudio.TestTools.UnitTesting; using Nancy; using Nancy.Testing; using NancyFxApplication; namespace NancyTestProject { [TestClass] public class NancyTest { [TestMethod] public void simplest_get_test() { var bootstrapper = new ConfigurableBootstrapper(with => { with.Module<NancyFxModule>(); with.RootPathProvider<TestRootPathProvider>(); }); // Given var browser = new Browser(bootstrapper); // When var result = browser.Get("/", with => { with.HttpRequest(); }); // Then Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); } } }
テストエクスプローラーでテストを実行し、次の結果を取得します。
ご覧のとおり、テスト環境のセットアップには数分しかかかりませんでした。 これで、アプリケーションのテスト中に新しいテストを簡単に追加できます。 結論として、シリーズの最後の記事について簡単に発表したいと思います。 彼女はNancy.SelfHostingに専念します。
ご意見、ご意見をお待ちしております。