假设我有一个这样的 Actor (使用 Akka 2.1 和 Scala 2.10):
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() 左右,因为它将被发送给不同的 Actor 。处理这种情况的最佳做法是什么?我只是想确保消息被发送,但我不知道如何做到这一点。
谢谢,
迈克尔
最佳答案
将依赖项作为构造函数参数传入:
普通代码:
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")
关于unit-testing - 测试传出 Akka Actor 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14341449/