假设我有一个这样的演员(使用带有
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")