0

Nancy Webアプリの単体テストを行うと、「閉じたストリームにアクセスできません」というメッセージが表示されます。

私のモジュールは次のとおりです。

public class MainModule : NancyModule
{
    public MainModule()
    {
        Get["/{Name}"] = p =>
            {
                var command = this.Bind<MainCommand>();
                return Response.AsJson(command.ExecuteGetMessage());
            };
    }
}

そして私のテストは:

    [Test]
    public void Should_return_welcome_message()
    {
        // When
        var bootstrapper = new DefaultNancyBootstrapper();
        var browser = new Browser(bootstrapper);

        BrowserResponse browserResponse = browser.Get("/", with =>
            {
                with.HttpRequest();
            });

        Console.WriteLine(browserResponse.StatusCode);
        Console.WriteLine(browserResponse.Body.ToString());

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

更新: StatusCode = NotFoundを取得していますが、browserResponse.Bodyにアクセスしようとすると例外が発生します。

ナンシーフォーラムとここStackOverflowを見てみました。私はこの解決策を試しました:ナンシーテストは他のアセンブリでルートを見つけません

しかし、まだ機能していません。

デバッグモードでテストを実行すると、モジュールが呼び出されていることがわかりますが、それでも戻り値を確認できません。

それを機能させるにはどうすればよいですか?

ありがとう

アデマール

4

1 に答える 1

1

定義したルートが呼び出したルートと異なるため、NotFound応答が返されます。

テストを呼び出し/ていますが、モジュールのルートは/{Name}です。

例外は、NotFound応答のある本体がないためです。

テストを次のようなものに更新します。

var bootstrapper = new ConfigurableBootstrapper(c=>c.Module<MainModule>());
var browser = new Browser(bootstrapper);
BrowserResponse browserResponse = browser.Get("/ademar", with =>
        {
            with.HttpRequest();
        });

*コメントからのソースを含むように更新されました*

于 2013-02-10T17:39:16.007 に答える