5
Bir aktörün akka içinde durup durmadığını test etme şeklini merak ediyorum. İşte şu an yaptığım şeye bir örnek; Endişeli olduğum için karmaşık yapıyorum.akka: Bir aktörün durdurulduğunu test etme
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)
}
Mükemmel - Böyle bir şey için umuyordum. Onu nasıl kaçırdığımı bilmiyorum Cheers. – Mullefa
Ayrıca, "ActorRef" in "expectTerminated()" yöntemine geçmesi zor olduğunda, örn. ref, başka bir aktörün çocuğu olarak yaratıldı, durdurulan ref'yi yakalamak ve kontroller yapmak için yararlı buldum. adı: val msg = testProbe.expectMsgType [Sonlandırıldı]; assert (msg.actor.path.name == "myActor") – Mullefa
TestProbe yerine testActor kullanmanın bir sorunu var mı? 'bu saat myActor ' ' myActor! MyActor.Stop ' 'bekliyorTerminated (myActor)' –