Если ваш актер общается только с имитациями, которые вы контролируете напрямую, и вам не нужен реальный параллелизм в тесте, вы можете использовать CallingThreadDispatcherConfigurator
.Это имеет смысл, когда вы пишете модульный тест для одного актера или хотите сделать взаимодействие акторов детерминированным в тестах.
Весь асинхронный код будет выполняться в тестовом потоке.Поэтому, отправляя сообщение актеру, вы обычно можете быть уверены, что оно обрабатывается до следующего утверждения вашего теста.
Вот пример того, как создать тестовый набор для этой цели:
val config = ConfigFactory.parseString(
s"""akka.actor.default-dispatcher = {
| type = akka.testkit.CallingThreadDispatcherConfigurator
|}
|akka.actor.testkit.typed.single-expect-default = 0s
""".stripMargin
)
val testKit = ActorTestKit(ActorTestKitBase.testNameFromCallStack(), config)