Тест Нэнси не находит маршрут в другой сборке

У меня есть следующая спецификация (с использованием Machine.Specifications или mSpec):

public class when_a_user_logs_in_successfully
{
    static Browser _browser;
    static BrowserResponse _response;

    Establish context = () =>
        {
            var bootstrapper = new ConfigurableBootstrapper();

            _browser = new Browser(bootstrapper);
        };

    Because of = () => _response = _browser.Get("/Login", with => with.HttpRequest());    

    It should_return_a_successful_response = () => _response.Body.ShouldNotBeNull();
}

Маршрут из спецификации должен найти следующий модуль:

public class LoginModule : NancyModule
{
    public LoginModule()
    {
        Get["/Login"] = parameters => "test";
    }
}

Но по какой-то причине ответ имеет статус «NotFound» и тело, которое выдает исключение, говорящее, что поток закрыт/удален. В моем решении спецификации есть ссылка на сборку, содержащую LoginModule. Что еще нужно сделать, чтобы спецификация нашла маршрут в модуле?


person Byron Sommardahl    schedule 15.11.2011    source источник


Ответы (1)


Это потому, что у вас нет "жесткой ссылки" на другую сборку (т.е. вы не используете ни один из типов там напрямую), из-за этого .Net не загружает ее, и Нэнси не найдет ее.

У нас есть AppDomainAssemblyTypeScanner, который вы можете использовать для загрузки ваших сборок (там есть несколько методов, которые вы можете использовать для загрузки подстановочного набора DLL), или вы можете обмануть его, добавив переменную одного из типов в вашей основной сборке в ваша тестовая сборка.

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

person Steven Robbins    schedule 15.11.2011
comment
У меня точно такая же проблема, и Нэнси выполняет все хуки «До/После», но возвращает 404 на любых маршрутах. Использование AppDomainAssemblyTypeScanner не имеет никакого значения. - person Sergey Akopov; 07.07.2015