使用 testkit 进行 akka Actor 单元测试

akka Actor unit testing using testkit

当被测试的 Actor 正在响应询问时有 many examples of using akka-testkit 次:

//below code was copied from example link
val actorRef = TestActorRef(new MyActor)
// hypothetical message stimulating a '42' answer
val future = actorRef ? Say42
val Success(result: Int) = future.value.get
result must be(42)

但是我有一个不响应发件人的 Actor;它而是将消息发送给单独的参与者。一个简化的例子是:

class PassThroughActor(sink : ActorRef) {
  def receive : Receive = {
    case _ => sink ! 42
  }
}

TestKit 有一套 expectMsg 方法,但我找不到任何创建可以在单元测试中接收消息的测试接收器 Actor 的示例。

可以测试我的PassThroughActor吗?

提前感谢您的考虑和回复。

如评论中所述,您可以使用 TestProbe 来解决此问题:

val sink = TestProbe()
val actorRef = TestActorRef(Props(new PassThroughActor(sink.ref)))

actorRef ! "message"

sink.expectMsg(42)