Как мне выполнить модульный тест NServiceBus.Configure.WithWeb ()? - PullRequest
4 голосов
/ 20 сентября 2010

Я создаю службу WCF, которая получает запросы на внешний IP-адрес и преобразует их в сообщения, отправляемые через NServiceBus.

Один из моих модульных тестов вызывает Global.Application_Start(), который выполняет настройкуприложение, а затем пытается разрешить веб-службу, чтобы проверить, что контейнер может создать все зависимости.

Это прекрасно работает, когда я использую Configure.With() в моих службах Windows, но вызов Configure.WithWeb() терпит неудачу в этом контексте (предположительно, потому что каталог "bin" не существует?).

Можно ли выполнить модульное тестирование метода, который вызывает Configure.WithWeb(), или мне просто использовать перегрузку для Configure.With(), которая принимает имя каталога?

1 Ответ

0 голосов
/ 19 декабря 2010

Я создал новый класс запуска, например:

public class NonWebRunAtStartup : IRunAtStartup
{
    public void InitializeInfrastructure(object container)
    {
        Configure.With()
            .StructureMapBuilder((IContainer) container)
            .Log4Net()
            .XmlSerializer()
            .MsmqTransport()
            .UnicastBus()
            .LoadMessageHandlers()
            .CreateBus()
            .Start();
    }
}

Затем в своем тесте я убедился, что мой контейнер IOC будет использовать этот контейнер вместо обычного веб-интерфейса, добавив его в мой тест:

IoC.Register<IRunAtStartup, NonWebRunAtStartup>(); 

Это привело меня к другой ошибке, с которой я все еще борюсь, которую я задам отдельным вопросом (теперь NSB не может загружать сборки, которые находятся в NServiceBus.Core.dll, например Antlr3.Runtime .dll).

...