Тест Нэнси не находит маршрут в другой сборке - PullRequest
1 голос
/ 15 ноября 2011

У меня есть следующая спецификация (с использованием 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.Что еще я должен сделать, чтобы спецификация нашла маршрут в модуле?

1 Ответ

5 голосов
/ 15 ноября 2011

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

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

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

...