При использовании Akka AutoPilot
будет ли он обрабатывать сообщения, уже отправленные на тестовый зонд?
В частности, я должен ожидать, что этот код пройдет?
new JavaTestKitDsl(...) {{
TestProbe probe = new TestProbe(...);
probe.testActor().tell("Hello", getRef());
// Be certain that the message has been queued
Thread.sleep(1000);
probe.setAutoPilot(new TestActor.AutoPilot() {
public TestActor.AutoPilot run(ActorRef sender, Object msg) {
sender.tell(msg, null);
return noAutoPilot();
}
});
expectMsg("Hello");
}};
Кажется, что это не так, как написано, но проходит, если я перемещаю setAutoPilot
до того, как отправить сообщение.
В реальной системе тест намного сложнее, и я дошел до того, что три субъекта отправляют разные тестовые сообщения в одно и то же время. В этот момент я намеревался установить автопилот, чтобы было ясно, куда я ожидал прибыть сообщения, но, похоже, мне нужно настроить автопилот, прежде чем я отправлю сообщения, которые активируют других участников.
Документация не говорит об этом ничего, что я мог бы найти.
Это работает с Akka 2.5.18 и Java 10, если это имеет значение.