问题描述
如何在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"...)