Ich versuche meine Akteur Logik mit AkkaTestKit zu testen. Das Problem ist, dass mein Schauspieler ask
Muster verwendet. Also muss ich irgendwie antworten. Es sieht wie folgt aus:Antwort in AkkaTestKit
case class AskExecution(id: Long)
override def receive: Receive = {
case id : Long =>
implicit val dispatcher = context.dispatcher
implicit val timeout = Timeout(10 seconds)
val executor = sender
//How to answer this?
val f = executor ? AskExecution(id) map(v => v.asInstanceOf[Option[Long]])
f.onComplete{
case Success(k) =>
case Failure(_) =>
}
}
Im Test habe ich es wie folgt verwenden:
val ca = TestActorRef(new TheActor())
ca ! 0L //I send 0, Now I want to answer the ask
//How to do so?
Es ist sogar einfacher, eine 'TestProbe' zu injizieren und es verwendet, um sicherzustellen, dass Nachrichten gesendet wurden und darauf zu reagieren zu ihnen. Es ist nicht notwendig, eine neue Akteursklasse zu erstellen, und besonders nützlich, wenn das Verhalten eines anderen Akteurs vom Zustand abhängt. –