Akka持久性测试方法

时间:2015-06-16 08:24:24

标签: akka akka-persistence

我熟悉这里定义的Akka测试方法:

http://doc.akka.io/docs/akka/snapshot/scala/testing.html

我理解如何使用TestKit,TestActorRef,TestProbe等。我也理解我的核心域逻辑应该从Akka中独立提取和测试。

我的问题是关于在Akka Persistence actor上进行TDD的策略,即PersistentActor和PersistentView。

我希望能够以合理的低开销,高效的方式测试以下类型的场景,即尽可能接近单元测试:

  1. 持久性演员是否持有具有正确ID的事件?
  2. 我的快照恢复是否正常恢复状态?
  3. 我的观点是否读取了正确的事件?
  4. 如果有人知道一个项目可以帮助我看到这一点,我将不胜感激。

    我能想到的一种方法是使用测试PersistentView来验证PersitentActor是否完成了它的工作。看起来有点令人费解。

    这不是测试Akka持久性框架本身,而是测试我的Actors已经正确设置以使用它并且行为符合预期。

1 个答案:

答案 0 :(得分:0)

Ad.1 可重复使用的解决方案是某种具有事件总线发布功能的内存日记。通过这种方式,您可以创建一个测试探针,以便在事件总线上侦听已发布的事件并断言它们。

Ad.2 Ad.3 更多关于如果我的演员在恢复后正确回应,我有理由相信它处于正确的状态。这样,您不仅可以验证其内部字段是否已正确设置,还可以验证由于become更改而接收方法是否已正确恢复。

可选地,检查状态明显具有一些消息类型,将玩家的状态返回给发件人。它可以通过在接收方法上使用特征和覆盖来使其成为通用的。