gpt4 book ai didi

akka - 如何测试 Akka Persistence actor

转载 作者:行者123 更新时间:2023-12-04 22:58:38 24 4
gpt4 key购买 nike

我正在开发一个基于 Akka Persistent FSM 的项目。尤其:

  • 我想知道构建独立测试用例的最佳方法是什么?由于状态更改是持久的(这在文档中没有很好地解释,但可以看到 here ),确保我的持久参与者始终以干净状态开始可能会很棘手。是否有必要手动将重置构建到我的 Actor FSM 协议(protocol)中?如果是这样,这似乎并不理想,因为它是需要自行测试的新行为。
  • 在测试中管理期刊本身的最佳方式是什么?有没有一种简单的方法来配置使用不同的日志进行测试,而不必在角色设计本身中明确选择? Plugin TCK文档的部分提到手动删除整个日志文件。这对于测试插件本身来说似乎是合理的,但对于应用程序代码来说,这似乎是一种不必要的低级解决方案。或许我需要明确调用期刊的 asyncDeleteMessagesTo在测试中拆除?这看起来仍然相当低级,但也许它只是尚未内置到库中的基础设施。
  • 最佳答案

    在对持久性actor进行单元测试时,您可以使用内存中持久性插件,例如https://github.com/dnvriend/akka-persistence-inmemory

    无需更改代码,您只需使用不同的 application.confsrc/test/resourcessrc/main/resources .

    为了单元测试之间的独立性,您可以将persistenceId 注入(inject)到actor 中。为每个测试创建一个具有不同持久性 ID 的 Actor 的新实例。然后,即使先前测试的事件仍然存在于内存中,它们也不会影响后续测试。

    如果您使用 Akka testkit,每次测试运行都会创建一个新的 actor 系统,并且在系统关闭时运行结束时,内存日志的内容会被销毁,因此无需手动清理。

    关于akka - 如何测试 Akka Persistence actor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33494629/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com