在内存服务总线(NServiceBus)

时间:2013-11-13 21:50:23

标签: c# unit-testing integration-testing nservicebus

我想知道是否有办法通过配置将NServiceBus置于一种将消息写入内存队列而不是物理队列的模式?

我的用例是Integration testing。理想情况下,我希望避免将消息放在物理队列上,以避免集成测试对队列的依赖。我的测试侧重于测试将消息放在总线上的代码周围的逻辑,但如果队列不存在,测试将失败。

现在我在测试中手动创建队列,但是想避免这种情况。

每当我执行bus.Send(queueMessageObject);时,我希望将消息存储在内存中(或者可能只是被忽略,因为我只是测试将它放在那里的逻辑)。

在我的unit tests我可以通过使用MOQ模拟IBus对象来解决这个问题。但是在我的集成测试中,我不是在模拟总线,而是希望将消息发送到内存端点。我也不想使用与bus.Send()不同的API来将消息放在总线上。

是否有当前/未来的NServiceBus配置设置可以执行此操作?

2 个答案:

答案 0 :(得分:1)

  

我也不想使用与bus.Send()不同的api来将消息放在总线上。

为什么不呢?使用NServiceBus实现自己的抽象,可以轻松实现一堆其他实现和/或在不同总线之间切换。

我们有一个参数化工厂,它返回少数几个实现之一,消息可以放在日志中,写入文件,通过wcf等发送。这使我们可以创建许多不同的单元/集成测试。

答案 1 :(得分:1)

是的,我们计划支持它,请参阅https://github.com/Particular/NServiceBus/issues/1357