Тестирование Akka Streams divertTo с помощью streams testkit

У меня есть график, состоящий из нескольких потоков, каждый из которых возвращает Either некоторой ошибки или фактического результата. В коде используется _2 _ для отправки любого Lefts в приемник, отличный от приемника нисходящего потока счастливого пути.

Проблема, с которой я столкнулся, заключается в том, что при использовании тестового набора Akka Streams я не могу найти способ проверить приемник, используемый в вызове divertTo. Я могу хорошо исследовать приемник счастливого пути, но мне действительно нужно найти способ проверить не очень удачные пути, чтобы доказать, что мой поток работает.

Кто-нибудь делал такие вещи перед использованием тестового набора потоков?


person Pete Slater    schedule 04.10.2019    source источник
comment
Измените свой вопрос, включив в него любой код, который вы уже пробовали, а затем Прочтите это.   -  person Miles Fett    schedule 04.10.2019


Ответы (1)


Проблема, с которой я столкнулся, заключается в том, что ... Я не могу найти способ проверить приемник, используемый в вызове divertTo .... Выполнял ли кто-нибудь подобные вещи перед использованием тестового набора потоков?

Да: https://github.com/akka/akka/blob/release-2.5/akka-stream-tests/src/test/scala/akka/stream/scaladsl/GraphPartitionSpec.scala

Из приведенной выше спецификации:

"divertTo must send matching elements to the sink" in assertAllStagesStopped {
  val odd = TestSubscriber.probe[Int]()
  val even = TestSubscriber.probe[Int]()
  Source(1 to 2).divertTo(Sink.fromSubscriber(odd), _ % 2 != 0).to(Sink.fromSubscriber(even)).run()
  even.request(1)
  even.expectNoMessage(1.second)
  odd.request(1)
  odd.expectNext(1)
  even.expectNext(2)
  odd.expectComplete()
  even.expectComplete()
}
person Jeffrey Chung    schedule 04.10.2019
comment
Отлично, спасибо. Я должен был сначала проверить тесты. - person Pete Slater; 04.10.2019