使用Streams TestKit测试Akka Streams divertTo

时间:2019-10-04 14:53:43

标签: scala akka akka-stream akka-testkit

我有一个由多个流组成的图,每个流都返回某个错误或实际结果的Either。该代码使用divertTo来将任何Lefts发送到与快乐路径下游接收器不同的接收器。

我遇到的问题是,在使用Akka Streams测试工具包时,我找不到一种方法来探测divertTo调用中使用的接收器。我可以很好地探测“快乐路径”下沉,但我真的需要找到一种方法来测试不太快乐的路径,以证明我的流程正在工作。

在使用流测试包之前,有人做过这种事情吗?

1 个答案:

答案 0 :(得分: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()
}