2012-05-05 4 views
6

При попытке проверить модуль Нэнси из тестового проекта ударите немного камнем преткновения. Мой тестовый код выглядит довольно стандартный:Проект тестирования Нэнси не может найти взглядов

[TestMethod] 
public void Should_return_status_ok_when_route_exists() 
{ 
    // Given 
    var bootstrapper = new DefaultNancyBootstrapper(); 
    var browser = new Browser(bootstrapper); 

    // When 
    var result = browser.Get("/", with => 
    { 
     with.HttpRequest(); 
    }); 

    // Then 
    Assert.AreEqual(result.StatusCode, HttpStatusCode.OK); 
} 

я получаю не удалось найти вид исключения, когда мой модуль пытается вынести мнение. Если я обычно запускаю проект, модуль находит это представление. Только при вызове из тестового проекта модуль не может его найти.

ответ

8

Проблема заключается в том, что представления не закрывают ваш тестовый проект, и поскольку IRootPathProvider указывает на неправильное место, он не может их найти. Есть два способа обойти это использовать ConfigurableBootstrapper (который является более или менее такой же, как по умолчанию один, но возможность переопределить материал при инициализации) и сказать ему, чтобы использовать ваш пользовательский корень провайдеру Path

var bootstrapper = new ConfigurableBootstrapper(with => { 
    with.RootPathProvider<CustomRootPathProvider>(); 
}); 

Затем вы должны реализовать public class CustomRootPathProvider : IRootPathProvider и указать его в нужном месте.

Второе решение было бы установить свои взгляды всегда копировать в выходной каталог, я считаю, что следует также решить

+1

Также обратите внимание, что вы должны иметь правильный вид двигатель, установленный в тестовом проекте. Представления cshtml не будут найдены, например, без установленного механизма просмотра Razor. – theDmi

+2

Также взгляните на эту красивую реализацию IRootPathProvider: http://www.jefclaes.be/2012/06/making-my-first-nancyfx-test-pass.html –

+0

Установив мое представление на «Всегда копировать», я смог сделать простой пробный проход. Не нужно даже внедрять корневой путь провайдера. Благодаря! – dimiguel

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