如何对 NServiceBus.Configure.WithWeb() 进行单元测试?

发布于 2024-09-24 07:57:48 字数 400 浏览 3 评论 0原文

我正在构建一个 WCF 服务,该服务接收外部 IP 上的请求并将其转换为通过 NServiceBus 发送的消息。

我的一个单元测试调用 Global.Application_Start(),它执行应用程序的配置,然后尝试将 Web 服务解析为 验证容器是否可以构建所有依赖项。

当我在 Windows 服务中使用 Configure.With() 时,这工作正常,但是 在这种情况下,对 Configure.WithWeb() 的调用失败(大概是因为“bin” 目录不存在?)。

是否可以对调用 Configure.WithWeb() 的方法进行单元测试,或者我应该 只需使用带有目录名称的 Configure.With() 重载?

I'm building a WCF service that receives requests on an external IP and translates them into messages that are sent via NServiceBus.

One of my unit tests invokes Global.Application_Start(), which performs the configuration of the application, and then attempts to resolve the web service to
validate that the container can build up all of the dependencies.

This works fine when I'm using Configure.With() in my windows services, but
the call to Configure.WithWeb() fails in this context (presumably because the "bin"
directory does not exist?).

Is it possible to unit test a method that calls Configure.WithWeb(), or should I
just use the overload for Configure.With() that takes a directory name?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧伤还要旧人安 2024-10-01 07:57:48

我创建了一个新的启动类,如下所示:

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

然后在我的测试中,我通过将其添加到我的测试中,确保我的 IOC 容器将使用这个启动类,而不是通常的基于 Web 的启动类:

IoC.Register<IRunAtStartup, NonWebRunAtStartup>(); 

这让我遇到了不同的错误,我'我仍在与之斗争,我将作为一个单独的问题提出(现在 NSB 无法加载 NServiceBus.Core.dll 中的程序集,例如 Antlr3.Runtime.dll)。

I created a new startup class like so:

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

Then in my test, I ensured that my IOC container would use this one instead of the usual web-based one by adding this to my test:

IoC.Register<IRunAtStartup, NonWebRunAtStartup>(); 

This got me to a different error, which I'm still fighting with, which I'll ask as a separate question (now NSB can't load assemblies that are in NServiceBus.Core.dll, such as Antlr3.Runtime.dll).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文