2013-03-04 8 views
8

Po prostu mam mokre stopy w Nancy. Byłem bardzo podekscytowany, gdy zobaczyłem proces testowania na Wiki, ale kiedy próbowałem następujących rzeczy, nie mogłem tego zrobić, praca na początku zdała testy.Dlaczego `DefaultNancyBoostrapper` nie znajduje mojego NancyModule

Korzystanie VS2010

  1. Utworzono Empty ASP.NET Web Application Project: Notify.App
  2. Install-Package Nancy.Hosting.AspNet
  3. Utworzono prosty moduł, jak wymienione poniżej: NotifyModule
  4. Utworzono Class Library projekt: Notify.UnitTests
  5. Install-Package Nancy.Testing
  6. Install-Package XUnit
  7. Utworzony proste Pierwszy test: BaseUrlSpec.cs

Korzystanie DefaultNancyBootstrapper test nie powiedzie się z HttpStatusCode.NotFound.

Jeśli zastąpić definicje bootstrapper z:

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

następnie przechodzi testu. Nie rozumiem, dlaczego SDHP przy użyciu DefaultNancyBootstrapper nie działa? Czy zrobiłem coś złego, aby go złamać, czy też brakuje mi szczegółów w moim rozumieniu?


NotifyModule

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

Odpowiedz

6

Musisz upewnić się, że zespół zawierający trasy jest załadowany. Odwoływanie się do typu ze swojego zespołu zapewnia to, dlatego działa wersja korzystająca z konfigurowalnego programu ładującego. Aby drugi działał, po prostu dodaj referencję do jakiegoś typu ze swojego zespołu. Nie ma potrzeby tworzenia instancji.

+1

Christian ma rację. To jest rzecz .NET, a nie rzecz Nancy. Jeśli miałbyś wykonać 'var foo = typeof (NotifyModule)' w twoim teście, to przeszedłby on z 'DefaultNancyBootstrapper' Jednak w 0.17 próbujemy obejść to, ładując wszystkie zestawy, które odwołują się do zespołu Nancy https: // github .com/NancyFx/Nancy/pull/1001 – TheCodeJunkie

+1

Po prostu posiadanie mojej aplikacji jako jednej z "Referencji" w bibliotece testów jednostkowych nie powoduje, że Nancy ją podnosi. –

+1

Nie, odwołanie do zestawu nie jest wystarczające. Potrzebujesz kodu w swoim kodzie. –

Powiązane problemy