7

コントローラーに注入される Akka アクターに送信されるリクエストを制御するコントローラー クラスがあります。

コントローラーのコード:

class Controller(actor: ActorRef) {
  def control(msg: String): Future[String] = {
    actor.ask(msg)(Timeout(2 seconds)).mapTo[String]
  }
}

そして、私のアクターのコードは次のとおりです。

class ActorA extends Actor {
  override def receive: Receive = {
    case msg: String => sender ! msg
    case msg: Int => sender ! msg.toString
    case _ => "Invalid command!"
}

ここで、Controller を単体テストするために ActorA の動作をモックする必要があります。Akka TestKit 経由で行う方法はありますか?

4

1 に答える 1

15

を使用しTestProbeます。テストドキュメントから:

val probe = TestProbe()
val future = probe.ref ? "hello"
probe.expectMsg(0 millis, "hello") 
probe.reply("world")
assert(future.isCompleted && future.value == Some(Success("world")))
于 2015-12-14T13:11:50.890 に答える