Тестирование Akka Streams divertTo с потоковым тесткитом - PullRequest
1 голос
/ 04 октября 2019

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

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

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

1 Ответ

1 голос
/ 04 октября 2019

Проблема, с которой я столкнулся, заключается в том, что ... я не могу найти способ исследовать приемник, использованный в вызове 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()
}
...