unit-testing – 测试传出的Akka Actor消息

假设我有一个这样的演员(使用带有
Scala 2.10的Akka 2.1):

class ClientActor extends Actor with ActorLogging {

  val configurationManager = context.actorOf(Props[ConfigurationManager], "ConfigurationManager")

  def disconnected: Receive = {
    case msg: Connect => 
      configurationManager ! msg
      context.become(connecting)
  }

  ..

  def recieve = disconnected
}

因此,现在当客户端收到Connect消息时,它会将其发送到ConfigurationManager并进入另一个状态.那很好,但现在我想测试一下.

val clientRef = TestActorRef(new ClientActor).
clientRef ! new Connect
// ??

我不能指望Msg()在这里,因为它将被发送到另一个演员.处理这种情况的最佳做法是什么?我只是想确保消息被发送,但我不知道如何做到这一点.

谢谢,
迈克尔

最佳答案 将依赖项作为构造函数参数传递:

普通代码:

val configActor = 
  system.actorOf(Props[ConfigurationManager], "configManager")

val clientActor = 
  system.actorOf(Props(new ClientActor(configActor)), "clientActor")

测试代码:

val clientActor = 
  system.actorOf(Props(new ClientActor(testActor)), "clientActor")
点赞