1

我熟悉这里定义的 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. 我的观点是否阅读了正确的事件?

如果有人知道可以帮助我看到这一点的项目,我将不胜感激。

我能想到的一种方法是有一个测试 PersistentView 可以用来验证 PersitentActor 是否完成了它的工作。不过好像有点绕。

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

4

1 回答 1

0

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

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

可选择地检查状态,有一些消息类型将参与者的状态返回给发送者。它可以通过在接收方法上使用特征和覆盖来实现通用化。

于 2015-06-16T09:52:15.667 回答