无论如何让rebus同步发布所有消息,以便在处理完所有消息后我可以断言某个值?
或者进行集成测试的最佳方法是什么:
- 发布活动
- 由 saga 处理,发送命令
- 处理命令,发布另一个事件
- Saga 标记为已完成
- 另一个事件处理程序更新数据库
- 断言或数据库
谢谢
问候
阴
无论如何让rebus同步发布所有消息,以便在处理完所有消息后我可以断言某个值?
或者进行集成测试的最佳方法是什么:
谢谢
问候
阴
要测试单个 saga 及其行为,您应该查看我写的博客文章Unit testing sagas with Rebus,这是一个关于如何使用SagaFixture
和FakeBus
可以使用的示例 - 我认为它支持您提到的所有内容测试。
如果您对测试更复杂的场景感兴趣,可能涉及其他处理程序和更长的消息对应等,您可能会从一些战略使用中受益ManualResetEvent
- Rebus 有几个集成测试,它们启动总线并做一些事情,resetEvent.Set()
在场景中执行结束 - 这样,测试可以resetEvent.WaitOne(timeout)
在测试运行时阻塞并在测试结束时立即继续。