2013-03-04 4 views
8

Я просто мочу ноги в Нэнси. Я был очень рад видеть процесс тестирования в Wiki, но когда я попробовал следующее, я не смог заставить его работать, сначала пройти тесты.Почему «DefaultNancyBoostrapper» не находит мой NancyModule

Использование 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>()); 

то тест проходит. Я не понимаю, почему SDHP с использованием DefaultNancyBootstrapper не работал? Я сделал что-то не так, чтобы заставить его сломаться, или мне не хватает деталей в моем понимании?


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

ответ

6

Вы должны убедиться, что узел, содержащий маршрут загружен. Это позволяет ссылаться на тип вашей сборки, поэтому работает версия с настраиваемым загрузчиком. Чтобы сделать работу другой, просто добавьте ссылку на какой-либо тип из вашей сборки. Не нужно создавать его.

+1

Христианин верен. Это вещь .NET, а не вещь Нэнси. Если вы должны были выполнить «var foo = typeof (NotifyModule)» в своем тесте, тогда он будет передаваться с «DefaultNancyBootstrapper». Однако в 0.17 мы пытаемся обойти это, загрузив все сборки, которые ссылаются на сборку Нэнси https: // github .com/NancyFx/Nancy/pull/1001 – TheCodeJunkie

+1

Итак, просто наличие моего приложения в качестве одной из «ссылок» в библиотеке тестовых модулей не заставляет Нэнси забирать его. –

+1

Нет, ссылки на сборку недостаточно. Вам нужна ссылка в коде. –

Смежные вопросы