相关疑难解决方法(0)

使用PerWebRequest生活方式测试Castle windsor组件

我试图对城堡windsor进行一些测试,在我的一个测试中我想检查windsor安装程序,所以我检查容器可以解析我的组件给定其界面.

到目前为止,这么好,问题开始时组件在其安装程序中具有PerWebRequest生活方式,起初它抱怨HttpContext.Current为null,有一个解决了在测试设置中创建假上下文我现在在nunit中有这个异常测试

System.Exception:看起来你忘记注册http模块Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule在你的web.config部分添加''.如果您在集成模式下运行IIS7,则需要将其添加到下面的部分

当我从NUnit运行它时,我如何在windsor中注册模块或类,以便它可以工作,或者如何模拟,因为在此测试中并不是真正的Web请求,只需检查容器是否解析了类型.

如果我在真正的webrequest之外使用这个组件进行任何集成测试,也有同样的事情会发生,有没有办法让这个工作或真的模拟一个Web请求,这样这个测试可以运行?

Tranks提前

费尔

testing components castle-windsor castle perwebrequest

17
推荐指数
1
解决办法
3267
查看次数

我如何单元测试Windsor可以解决Asp.net MVC3控制器依赖?

目前我有温莎控制器工厂,运作良好.但是,我正在更改我的控制器并让Windsor为控制器实例化更多数据.我忘了更新我的Installer类,但它失败了.

因此,我意识到这是单元测试的完美实例,所以每次运行单元测试时,它都会验证Windsor是否设置正确.

因此我创建了以下单元测试:

    [TestMethod]
    public void Windsor_Can_Resolve_HomeController_Dependencies()
    {
        // Setup
        WindsorContainer container = new WindsorContainer();

        // Act
        HomeController controller = (HomeController)container.Kernel.Resolve(typeof(HomeController));
    }
Run Code Online (Sandbox Code Playgroud)

这与我的WindsorControllerFactory.GetControllerInstance()方法中存在的代码完全相同,因此我不确定为什么这不起作用.当这运行我得到:

Test method MyApp.Tests.Controllers.HomeControllerTest.Windsor_Can_Resolve_HomeController_Dependencies threw exception: 
Castle.MicroKernel.ComponentNotFoundException: No component for supporting the service MyApp.Controllers.HomeController was found
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决这个问题.我唯一能想到的是,因为它在我的测试项目中,而不是我的Asp.net MVC项目,它可能不会自动提取我的CommandAndQueryInstaller类,其中包含我的所有windsor类型注册.

有关单元测试windsor依赖配置的建议吗?

c# unit-testing castle-windsor

4
推荐指数
1
解决办法
2865
查看次数