6

テスト プロジェクトから Nancy モジュールをテストしようとすると、ちょっとした障害にぶつかります。私のテストコードはかなり標準的に見えます:

[TestMethod]
public void Should_return_status_ok_when_route_exists()
{
    // Given
    var bootstrapper = new DefaultNancyBootstrapper();
    var browser = new Browser(bootstrapper);

    // When
    var result = browser.Get("/", with =>
    {
        with.HttpRequest();
    });

    // Then
    Assert.AreEqual(result.StatusCode, HttpStatusCode.OK);
}

モジュールがビューをレンダリングしようとすると、ビューを見つけることができないという例外が発生します。プロジェクトを正常に実行すると、モジュールはビューを見つけます。モジュールがそれを見つけられないのは、テスト プロジェクトから呼び出されたときだけです。

4

1 に答える 1

8

問題は、ビューがテスト プロジェクトの近くになく、IRootPathProvider が間違った場所を指しているため、それらを見つけることができないことです。これを回避する 2 つの方法は、ConfigurableBootstrapper (デフォルトのものとほぼ同じですが、初期化時にオーバーライドする可能性があります) を使用し、カスタム ルート パス プロバイダーを使用するように指示することです。

var bootstrapper = new ConfigurableBootstrapper(with => {
    with.RootPathProvider<CustomRootPathProvider>();
});

次に、それを実装public class CustomRootPathProvider : IRootPathProviderして適切な場所に向けます。

2番目の解決策は、ビューを常に出力ディレクトリにコピーするように設定することです。それも解決する必要があると思います

于 2012-05-07T06:29:32.050 に答える