一个单元如何测试持久性参与者。我知道有一个akka-testkit,可以用来获取测试参与者参考的基础参与者对象,如下所示。
final TestActorRef<MyActor> ref = TestActorRef.create(system, props, "testA");
final MyActor actor = ref.underlyingActor();
assertTrue(actor.testMe());
但是,这对于here所提到的持久参与者是行不通的。
问题:一个单元如何测试持久性参与者方法?
最佳答案
邮件列表in this thread上已经回答了这个问题。我将进一步解释给出的答案。
测试Actor时,请勿过度使用TestActorRef。最佳实践是通过发送到actor和从actor接收消息来尽可能地测试。即使通常使用TestActorRef,您也可以使用它来更改参与者的状态,然后再通过发送和接收消息来再次测试所需的对象。确实不建议使用直接访问actor来直接调用方法。如果您的角色中有一些更复杂的逻辑需要单独测试,则可以考虑将其放入特征或其他类中,并在没有角色的情况下进行测试。
至于测试PersistentActors(正在使用该工具的测试包),您可以跟踪进度here。