Проверка на отсутствие сообщений журнала при тестировании актеров akka - PullRequest
0 голосов
/ 28 ноября 2018

При тестировании актера Akka с TestKit, https://doc.akka.io/docs/akka/2.5/testing.html показывает, как проверить, что данное сообщение было зарегистрировано.

Есть ли способ проверить отсутствие сообщения?

У меня есть актеры, настроенные на вызов метода, который регистрирует что-то вроде «Неожиданное сообщение получено» при получении необработанного сообщения.В моем тесте я хотел бы убедиться, что это сообщение никогда не регистрируется, даже если в противном случае проверка кажется успешной.Есть ли способ сделать это?

Я использую Akka 2.5 и Java 10.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Чтобы предоставить некоторые детали, вот что мне нужно было сделать:

import akka.event.Logging;
import akka.testkit.javadsl.EventFilter;
import akka.testkit.javadsl.TestKit;
...

@Test
public void noUnhandledTest() {

  new TestKit(system) {{
    new EventFilter(Logging.Warning.class, system).
       occurrences(0).
       matches("unhandled event").
       intercept(() -> {
         try {
           <actual test code>

           // Intercept needs a supplier
           return 0;
         } catch (Exception e) {
           // Suppliers can't throw
           throw new RuntimeException(e);
         }
       });
  }};
}

В src/test/resources/application.conf:

akka.loggers = [akka.testkit.TestEventListener ]
0 голосов
/ 05 декабря 2018

Это зависит от вашей реализации.Вы можете сделать одно из двух:

1) Создать тестовый комплект TestKit и заставить его подписаться на событие вашей системы. EventStream

yourActorSystemInTheTest.eventStream (). Subscribe (yourProbe.getRef (), UnhandledMessage.class);

А затем в конце проверьте, сколько сообщений получил зонд, в вашем случае 0. Используйте один из множества методов "ожидаем ..." в вашем распоряжении.

2) Документы расскажут вам, как проверять сообщения журнала, поэтому просто утверждайте, что количество раз, которое вы получили "Неожиданное сообщение получено", равно 0.

Опять же, в зависимости от реализации ваших действующих лиц, вышеможет не работать.

Удачи!

...