我正在测试通过以下方式获得的传出流 TCP 连接流式传输消息的代码:
(IO(StreamTcp) ? StreamTcp.Connect(settings, address))
.mapTo[StreamTcp.OutgoingTcpConnection]
.map(_.outputStream)
在我的测试中,我将结果Subscriber[ByteString]
替换为虚拟订阅者,触发一些传出消息,并断言已按预期到达。我使用下面的方法来生成虚拟订阅者和未来的流结果。(到目前为止,一切都很好)
def testSubscriber[T](settings: FlowMaterializer)(implicit ec: ExecutionContext): (Subscriber[T], Future[Seq[T]]) = {
var sent = Seq.empty[T]
val (subscriber, streamComplete) =
Duct[T].foreach( bs => sent = sent :+ bs)(settings)
(subscriber, streamComplete.map( _ => sent ))
}
我的问题是:是否有一些规范的方法来测试流输出预期值,类似于 Akka 的TestActorRef
?如果没有,是否有一些类似于上述函数的库函数?