是否可以让rebus同步发布所有消息,以便在处理所有消息后可以断言某些值?
或者做集成测试的最好方法是什么:
- 发布事件
- 发送命令
- 处理命令,发布另一个事件
- 标记为完成的Saga
- 另一个事件处理程序更新数据库
- 断言或数据库
对
殷要测试单个传奇和它的行为,你应该看看我写的博客文章,用Rebus对传奇进行单元测试,这是一个关于如何使用SagaFixture
和FakeBus
的例子-我认为它支持你提到的所有你想测试的东西。
如果您对测试更复杂的场景感兴趣,可能涉及其他处理程序和更长的消息通信等,您可能会受益于ManualResetEvent
的一些战略使用- Rebus有几个集成测试,启动总线并做一些事情,当场景结束时做resetEvent.Set()
-这样,测试可以做resetEvent.WaitOne(timeout)
阻塞,而测试正在运行,并在结束时立即继续。