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

BaseUrlSpec

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

ルートを含むアセンブリが読み込まれていることを確認する必要があります。アセンブリから型を参照するとこれが保証されるため、構成可能なブートストラップを使用するバージョンが機能します。他の 1 つを機能させるには、アセンブリから何らかの型への参照を追加するだけです。インスタンス化する必要はありません。

于 2013-03-04T17:54:04.753 に答える