Akka等待所有消息在整个ActorSystem中处理

时间:2017-02-07 12:38:51

标签: akka

有没有办法等到邮箱(和存储器)中的所有邮件都在整个ActorSystem中处理? 我正在尝试开发基于Akka的系统集成测试架构。使用像actorSystem.awaitAllWorkDone()这样的方法会很方便,在这种情况下任意测试看起来像:

  1. 启动由多个演员组成的整个环境
  2. 发送正在测试的消息触发功能
  3. 调用actorSystem.awaitAllWorkDone()。等待直到处理完所有消息,包括从步骤2发送的消息以及它导致的所有内部通信消息。例如,来自第2步的消息会触发发送给其他actor的其他10条消息,因此它也应该等待它们。
  4. 现在系统处于"一致"状态,我可以验证它的状态。就像验证所有必需的更改是在db中进行的那样,或者所有必需的副作用都已完成。
  5. 实际上,步骤3可以替换为等待特定于该测试的消息,这表明所有内部通信都已完成。但重点是要有一个"等待"任何测试用例的方法,而不是搜索该测试用例的哪个消息是指示所有内部通信都已完成。 有人知道如何实现这个目标吗?

0 个答案:

没有答案