scala – akka:如何测试一个演员被停止了
发布时间:2020-12-16 19:20:56 所属栏目:安全 来源:网络整理
导读:我想知道测试演员是否已停止在akka的规范方法是什么.这是我目前正在做的一个例子;我担心我会让它复杂化. import akka.actor.{Terminated,Actor,Props,ActorSystem}import akka.testkit.TestProbeclass MyActor extends Actor { import MyActor._ override de
我想知道测试演员是否已停止在akka的规范方法是什么.这是我目前正在做的一个例子;我担心我会让它复杂化.
import akka.actor.{Terminated,Actor,Props,ActorSystem} import akka.testkit.TestProbe class MyActor extends Actor { import MyActor._ override def receive: Receive = { case Stop => context.stop(self) } } object MyActor { def props = Props(new MyActor) case object Stop } object MyActorSpec { val system = ActorSystem() val myActor = system.actorOf(MyActor.props) val testProbe = TestProbe() case object MyActorStopped val watcher = system.actorOf(Props(new Actor { context.watch(myActor) override def receive: Actor.Receive = { case Terminated(`myActor`) => testProbe.ref ! MyActorStopped } })) myActor ! MyActor.Stop testProbe.expectMsg(MyActorStopped) } 解决方法
您可以摆脱单独的观察者角色,直接从testProbe actor中观察目标actor:
val testProbe = TestProbe() testProbe watch myActor myActor ! MyActor.Stop testProbe.expectTerminated(myActor) 有关Akka测试文档的相关部分,请参阅here. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |