J'essaie de tester ma logique d'acteur avec AkkaTestKit. Le problème est que mon acteur utilise le modèle ask
. Donc j'ai besoin de répondre d'une manière ou d'une autre. Il semble que cela:Réponse ask 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(_) =>
}
}
Dans l'essai, je l'utilise comme suit:
val ca = TestActorRef(new TheActor())
ca ! 0L //I send 0, Now I want to answer the ask
//How to do so?
Il est encore plus facile d'injecter un 'TestProbe' et l'utiliser pour vérifier que les messages ont été envoyés et répondre pour eux. Pas besoin de créer une nouvelle classe d'acteur, et particulièrement utile si le comportement d'un autre acteur dépend de l'état. –