1

无论如何让rebus同步发布所有消息,以便在处理完所有消息后我可以断言某个值?

或者进行集成测试的最佳方法是什么:

  1. 发布活动
  2. 由 saga 处理,发送命令
  3. 处理命令,发布另一个事件
  4. Saga 标记为已完成
  5. 另一个事件处理程序更新数据库
  6. 断言或数据库

谢谢

问候

4

1 回答 1

1

要测试单个 saga 及其行为,您应该查看我写的博客文章Unit testing sagas with Rebus,这是一个关于如何使用SagaFixtureFakeBus可以使用的示例 - 我认为它支持您提到的所有内容测试。

如果您对测试更复杂的场景感兴趣,可能涉及其他处理程序和更长的消息对应等,您可能会从一些战略使用中受益ManualResetEvent- Rebus 有几个集成测试,它们启动总线并做一些事情,resetEvent.Set()在场景中执行结束 - 这样,测试可以resetEvent.WaitOne(timeout)在测试运行时阻塞并在测试结束时立即继续。

于 2014-08-15T07:49:58.967 回答