J'ai conçu un acteur qui devrait envoyer son actorRef à un autre acteur sur prédémarrage:ActorRef a-t-il obtenu via system.actorOf une valeur égale à lui-même dans cet acteur?
class MyActor(notifier: ActorRef) extends Actor {
override def preStart(): Unit = {
notifier ! Register(self)
}
...
}
case class Register(actor: ActorRef)
J'ai écrit un cahier des charges pour cet acteur:
class MyActorSpec extends TestKit(ActorSystem("MyActorSpec"))
with ImplicitSender
with WordSpecLike
with Matchers
with BeforeAndAfterAll {
"MyActor" should {
val notifier = TestProbe()
"register itself in notifier" in {
val myActor = system.actorOf(Props(classOf[MyActor], notifier.ref))
notifier.expectMsg(Register(myActor))
}
}
}
Quand je lance mon test , il échoue avec le message suivant: assertion failed: expected Register(Actor[akka://MyActorSpec/user/$b#1849780829]), found Register(Actor[akka://MyActorSpec/user/$a#1143150267])
, il semble donc que ActorRef obtenu par self
à l'intérieur MyActor n'est pas égal à ActorRef obtenu par system.actorOf
dans mon test. Aucune suggestion?
Oui, il y avait effectivement notifier.ref dans ma question, je l'ai corrigé. –