Имейте родительского актера, который создает ребенка и планирует ему сообщение.Я уже проверил детского актера, поэтому теперь я хочу протестировать их обоих.
Я пытался следить за родителем / ребенком в блоге Petabridge по тестированию , но мой тест так и не получил Сообщение.Похоже, путь отправителя отличается от пути TestActor.
[Test]
public void EnsureThatChildIsSendingMessages()
{
ActorOfAsTestActorRef<CoordinatorActor>(CoordinatorActor.Props(), TestActor);
ExpectMsg<DataStructures.DeviceReading>(TimeSpan.FromSeconds(10));
}
Путь тестового субъекта - {akka: // test / system / testActor1}
public CoordinatorActor()
{
collector = Context.ActorOf(CollectorActor.Props("192.168.1.148", Helpers.DeviceID.ID));
Context.System.Scheduler.ScheduleTellOnce(TimeSpan.FromSeconds(1),
collector,
new CollectorActor.CollectionRequest(),
Self);
Receive<DataStructures.DeviceReading>(r =>
{
Sender.Tell(r);
});
}
Однако в моем приеме, Sender.Path - это {akka: // test / system / testActor1 / $$ a / $ a}
Точка останова при получении получена, поэтому сборщик (дочерний элемент) отправляет сообщения своему родителю(координатор).
Является ли несоответствие пути причиной моего ExpectMsg?Мне удалось ввести путь возврата (TestActor.Path) в мои реквизиты, но я бы предпочел этого не делать.
Кроме того, меня беспокоит то, что в не тестовом режиме / производстве возникают ненужные (для моей бизнес-логики) Receive создаст лишние сообщения в моем Child, которые он просто проигнорирует.