Интеграционное тестирование Akka.Net - PullRequest
0 голосов
/ 26 мая 2019

Имейте родительского актера, который создает ребенка и планирует ему сообщение.Я уже проверил детского актера, поэтому теперь я хочу протестировать их обоих.

Я пытался следить за родителем / ребенком в блоге 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, которые он просто проигнорирует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...