gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 19:40:10 25 4
gpt4 key购买 nike

我正在尝试对涉及的温莎城堡进行一些测试,在我的一项测试中,我想检查温莎安装程序,因此我检查容器是否可以在给定接口(interface)的情况下解析我的组件。

到目前为止,一切顺利,当组件在其安装程序中具有 PerWebRequest 生活方式时,问题就开始了,起初它提示 HttpContext.Current 为空,解决了在测试设置中创建假上下文的问题我现在有了这个nunit 测试异常

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

下的部分

当我从 NUnit 运行它时,我如何在 windsor 中注册模块或类以使其工作,或者如何被模拟,因为在这个测试中并不是真正的网络请求,只是检查容器是否解析了类型。

如果我在真实的网络请求之外对该组件进行任何集成测试,同样的事情也会发生,有没有什么办法可以让它工作或真正模拟网络请求以便可以运行这个测试?

提前发货

最佳答案

在您的测试中,您可以订阅 ComponentModelCreated 事件并将每个 Web 请求组件的生活方式更改为其他内容。 (example)。

如果您正在编写具有单个请求范围的集成测试,那么应该使用单例。

如果您正在编写跨越多个请求的集成测试,您可以使用 contextual lifestyle模拟请求的范围。

编辑:包括来自示例的代码(不再可用):

container.Kernel.ComponentModelCreated += Kernel_ComponentModelCreated;

void Kernel_ComponentModelCreated(Castle.Core.ComponentModel model)
{
if (model.LifestyleType == LifestyleType.Undefined)
model.LifestyleType = LifestyleType.Transient;
}

关于使用 PerWebRequest 生活方式测试 CaSTLe windsor 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5781599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com