How can I unit test my controller to make sure Windsor can resolve dependencies when using PerWebRequestLifestyle

感情迁移 提交于 2019-11-30 01:17:55

问题


I have the following unit test in my application:

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

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

The point of this is to make sure I don't have any windsor configuration issues that I won't realize until I access an action on that controller. The problem is that all my object registrations are registered as PerWebRequestLifestyle so I don't get issues with my Entity Framwork Data Context being shared across web requests (which causes errors when multiple actions are run).

However, whenever I run this unit test I get the following exception:

System.InvalidOperationException: HttpContext.Current is null. PerWebRequestLifestyle can only be used in ASP.Net

How can I go about testing this scenario without changing the lifestyle of my object registration commands?


回答1:


I don't know if you can use the PerWebRequestLifestyle outside of ASP.NET (MVC) (I don't think you can), but you can use an IContributeComponentModelConstruction to modify the lifestyle of the components when they are registered.

This would enable you to (integration) test the container without modifying any of your Installers.



来源:https://stackoverflow.com/questions/5772497/how-can-i-unit-test-my-controller-to-make-sure-windsor-can-resolve-dependencies

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!