Я разработал актер, который должен отправить его actorRef другого актеру на предпусковом:Имеет ли ActorRef файл system.actorOf, равный себе внутри этого актера?
class MyActor(notifier: ActorRef) extends Actor {
override def preStart(): Unit = {
notifier ! Register(self)
}
...
}
case class Register(actor: ActorRef)
Тогда я написал спецификацию для этого актера:
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))
}
}
}
Когда я запускаю мой тест , он выдает следующее сообщение: assertion failed: expected Register(Actor[akka://MyActorSpec/user/$b#1849780829]), found Register(Actor[akka://MyActorSpec/user/$a#1143150267])
Таким образом, кажется, что ActorRef получается через self
внутри MyActor не равна ActorRef, полученный с помощью system.actorOf
в моем тесте. Какие-либо предложения?
Да, в моем вопросе было действительно notifier.ref, я исправил его. –