异步行为测试Akka

问题描述

如何在akka中测试异步行为?

我想测试一种行为,该行为会得到一条消息,然后生成一个新行为(我想确保该行为已生成

首先,我考虑过使用BehaviorTestKit(和.expectEffectType),但是由于它是同步的,因此无法正常工作。

我该怎么办?

解决方法

如果您想从“ Spawner” Actor中了解它是否产生了“ Worker”行为,请将其发送回“ Reply” ActorRef。

可能像这样:


/// BEHAVIOR case DoSomeStaff(replyTo) => replyTo ! Spawned(ctx.spawn(BEHAVIOR_WORKER,NAME))

val spawner = ctx.spawn(BEHAVIOR,"spawner")

val replyTo = TestInbox[Spawned]()

spawner ! API.DoSomeStuff(replyTo) <-- will send a ActorRef of Spawned Actor to ReplyTo

inbox.expectMessage("REF"...)