8

我只是在南希弄湿了我的脚。在 Wiki 中看到测试过程我真的很兴奋,但是当我尝试以下操作时,我一开始无法通过测试。

使用VS2010

  1. 创建Empty ASP.NET Web Application Project:Notify.App
  2. Install-Package Nancy.Hosting.AspNet
  3. 创建了如下所列的简单模块:NotifyModule
  4. 创建Class Library项目:Notify.UnitTests
  5. Install-Package Nancy.Testing
  6. Install-Package XUnit
  7. 创建简单的第一个测试:BaseUrlSpec.cs

使用DefaultNancyBootstrapper测试失败,出现HttpStatusCode.NotFound.

如果我将bootstrapper定义替换为:

var bootstrapper = new ConfigurableBootstrapper(
                          with => 
                             with.Module<NotifyModule>());

然后测试通过。 我不明白为什么使用 DefaultNancyBootstrapper 的 SDHP 不起作用?我是否做错了什么让它崩溃,或者我在理解中遗漏了细节?


通知模块

using Nancy;
public class NotifyModule : NancyModule {
    public NotifyModule() {
        Get["/"] = _ => HttpStatusCode.OK;
    }
}

基本网址规范

using Nancy;
using Nancy.Testing;
using Notify.App;
using Xunit;
public class BaseUrlSpec
{
    [Fact]
    public void ShouldRespondOk()
    {
        var bootstrapper = new DefaultNancyBoostrapper();
        var app = new Browser(bootstrapper);
        var response = app.Get("/", with => with.HttpRequest());
        var statusCode = response.StatusCode;
        Assert.Equal(HttpStatusCode.OK, statusCode);
    }
}
4

1 回答 1

7

您需要确保已加载包含您的路线的程序集。从您的程序集中引用一个类型可以确保这一点,因此使用可配置引导程序的版本可以工作。要使另一个工作,只需从您的程序集中添加对某些类型的引用。无需实例化它。

于 2013-03-04T17:54:04.753 回答