【发布时间】:2014-09-24 14:47:26
【问题描述】:
我正在尝试在我的解决方案中创建高级测试,并且我想“捕获”发送到总线的消息。
这是我的工作:
- nUnit [SetUp] 在 IISExpress 中启动 WebAPI 项目
- SetUp 还会创建总线
- 向 API 发送 HTTP 请求
- 验证我想验证的任何内容
整个测试的 WebAPI 部分运行良好。公共汽车的创建和启动似乎也很棒。它甚至可以找到我的假消息处理程序。问题是处理程序从不接收来自队列的命令,它们只是永远留在 RabbitMQ 队列中。
总线的配置方式如下:
var bus = Configure.With()
.DefineEndpointName("Local")
.Log4Net()
.UseTransport<global::NServiceBus.RabbitMQ>()
.UseInMemoryTimeoutPersister()
.RijndaelEncryptionService()
.UnicastBus();
.CreateBus();
在 NServiceBus 启动的日志中,我看到我的假处理程序与命令相关联:
2014-09-24 15:29:59,007 [Runner thread] DEBUG NServiceBus.Unicast.MessageHandlerRegistry
[(null)] <(null)> - Associated 'Bloo.MyCommand' message with 'Blah.FakeMyCommandHandler' handler
因此,当消息到达正确的 RabbitMQ 队列时,我假设一切都在处理程序点正常工作之前。
我已经尝试在我的 [TearDown] 中放置等待,以便总线的寿命更长一些 - 希望给处理程序时间来接收消息。我还尝试将交互的消费者部分的内存总线分离到一个新线程中,但没有成功。
有其他人尝试过吗?
这只是第一步,我想做的是创建一个假总线来记录发送给它的消息。对 RabbitMQ 的需求只是为了让自己继续前进(我的解决方案的边界是 WebAPI 在前面,总线在后面)。
干杯
【问题讨论】:
-
你在公交车上调用.Start()吗?
标签: testing rabbitmq nservicebus nservicebus4