Как я могу модульно протестировать свой контроллер, чтобы убедиться, что Windsor может разрешать зависимости при использовании PerWebRequestLifestyle - PullRequest
14 голосов
/ 24 апреля 2011

У меня есть следующий модульный тест в моем приложении:

    [TestMethod]
    public void Windsor_Can_Resolve_HomeController_Dependencies()
    {
        // Setup
        WindsorContainer container = new WindsorContainer();
        container.Install(FromAssembly.Containing<HomeController>());

        // Act
        container.Kernel.Resolve(typeof(HomeController));
    }

Суть в том, чтобы убедиться, что у меня нет проблем с настройкой виндзора, которые я не осознаю, пока не получу доступ к действиюна этом контроллере.Проблема заключается в том, что все мои регистрации объектов зарегистрированы как PerWebRequestLifestyle, поэтому у меня не возникает проблем с общим контекстом данных Entity Framwork между веб-запросами (что приводит к ошибкам при выполнении нескольких действий).

Однаковсякий раз, когда я запускаю этот модульный тест, я получаю следующее исключение:

System.InvalidOperationException: HttpContext.Current имеет значение null.PerWebRequestLifestyle можно использовать только в ASP.Net

Как я могу протестировать этот сценарий, не меняя стиль жизни моих команд регистрации объектов?

1 Ответ

18 голосов
/ 24 апреля 2011

Я не знаю, можете ли вы использовать PerWebRequestLifestyle вне ASP.NET (MVC) (я не думаю, что вы можете), но вы можете использовать IContributeComponentModelConstruction для изменения образа жизни компонентов, когда они зарегистрированы .

Это позволит вам (интегрировать) протестировать контейнер без изменения любого из ваших Установщиков.

...