单元测试南希网络应用时,我收到“无法访问封闭的流”。
我的模块如下:
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
答案 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();
});
*已更新,以包含评论来源