簡體   English   中英

如何測試是否調用了 akka-streams 接收器?

[英]How can I test that an akka-streams sink was called?

我有一個用例,我將接收器傳遞給某個演員 - 所以我也可以傳遞一個 TestSink

當那個演員收到一條消息時,我將一條消息傳遞給那個接收器,使用

case class SomeActor[T, U](sink: Sink[U, NotUsed] {
  def behavior: Behavior[T] = Behavors.receive[T] { (ctx, msg) =>
    msg match {
      case MessageT =>
        ref = sink.runWith(ActorSource.actorRef[U](PartialFunction.empty, PartialFunction.empty, 0, OverflowStrategy.fail)
        ref ! MessageU
        Behaviors.same
    }
  }
}

如何測試接收器是否已收到MessageU

嘗試使用 akka-stream-testkit ( https://doc.akka.io/docs/akka/current/stream/stream-testkit.html )。 您的示例的測試代碼(省略類型以保持清潔):

val probe = TestProbe()
val sink = Sink.actorRef(probe.ref, onCompleteMessage = "completed", onFailureMessage = _ => "failed"))
val someActor = SomeActor(sink)

// use someActor.behavior

probe.expectMsg(1.second, MessageU)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM