获取单元测试Nancy时无法访问封闭的Stream

时间:2013-02-08 11:03:50

标签: c# unit-testing rest nancy

单元测试南希网络应用时,我收到“无法访问封闭的流”。

我的模块如下:

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);
    }

UPDATE:我收到StatusCode = NotFound,尝试访问browserResponse.Body时发生异常。

我看过南希论坛,也看过StackOverflow。 我尝试了这个解决方案:Nancy test doesn't find route in other assembly

但仍无效。

当我在调试模式下运行测试时,我看到我的模块已被调用,但我仍然无法检查返回的值。

为了让它正常工作,我该怎么做?

由于

ADEMAR

1 个答案:

答案 0 :(得分: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();
        });

*已更新,以包含评论来源