5

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

  1. 我想知道构建独立测试用例的最佳方法是什么?由于状态更改是持久的(这在文档中没有得到很好的解释,但可以在这里看到),确保我的持久参与者始终以干净的状态开始可能会很棘手。是否有必要手动将重置构建到我的演员 FSM 协议中?如果是这样,这似乎并不理想,因为它是需要自行测试的新行为。

  2. 在测试中管理期刊本身的最佳方式是什么?有没有一种简单的方法来配置使用不同的日志进行测试,而不必在角色设计本身中明确选择?文档的插件 TCK部分提到手动删除整个日志文件。这对于测试插件本身来说似乎是合理的,但对于应用程序代码来说,这似乎是一种不必要的低级解决方案。也许我需要在测试拆解中显式调用日志的asyncDeleteMessagesTo?这看起来仍然相当低级,但也许它只是尚未内置到库中的基础设施。

4

1 回答 1

10

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

无需更改代码,您只需使用与application.confin不同的src/test/resourcesin即可src/main/resources

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

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

于 2015-11-04T11:28:52.280 回答