【问题标题】:Akka persistence testing approachesAkka 持久性测试方法
【发布时间】:2015-06-16 08:24:24
【问题描述】:

我熟悉这里定义的 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 是否已正确设置以使用它并且行为是否符合预期。

【问题讨论】:

  • 为了检查事件是否持久化,我使用了内存日志和测试持久化视图来验证事件是否持久化。为了测试快照恢复,我在发送命令后简单地销毁了actor,然后重新启动 - 然后恢复了检查状态。使用 akka testkit 作为测试框架。

标签: akka akka-persistence


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2021-09-30
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 2011-03-31
    • 2018-12-19
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    相关资源
    最近更新 更多