我想模仿收到消息的Actor:
GetAllJobs()
并回复一条消息:
ReturnAllJobs(jobHash: Map[Int, Job])
我想用TestProbe做这样的事情:
resultReceiver.onMessage(GetAllJobs()).reply(ReturnAllJobs(jobHash))
那么如何使用TestProbe模拟actor?
答案 0 :(得分:0)
Autopilot
可能有所帮助。请参阅以下示例:
val probe = TestProbe()
probe.setAutoPilot(new TestActor.AutoPilot {
def run(sender: ActorRef, msg: Any): TestActor.AutoPilot = {
msg match {
case GetAllJobs =>
sender ! ReturnAllJobs(jobHash)
TestActor.KeepRunning
case x => TestActor.KeepRunning
}
})
有关详细信息,请参阅here。
答案 1 :(得分:0)
对于使用Akka的Java粉丝
final TestProbe simpleActor = TestProbe.apply(akkaSystem);
simpleActor.setAutoPilot(new TestActor.AutoPilot() {
public TestActor.AutoPilot run(ActorRef sender, Object msg) {
if (msg instanceof DoAction) {
sender.tell(new Response(), ActorRef.noSender());
log.info("Respond to {}", sender);
}
return noAutoPilot();
}
});