gpt4 book ai didi

scala - 在测试 Akka actor 时,如何验证发送给自己的消息是否已送达?

转载 作者:行者123 更新时间:2023-11-28 19:41:47 25 4
gpt4 key购买 nike

我有一个 Actor,在功能上类似于以下 Actor。

case class SupervisingActor() extends Actor {

protected val processRouter = //round robin router to remote workers
override def receive = {
case StartProcessing => { //sent from main or someplace else
for (some specified number of process actions ){
processRouter ! WorkInstructions
}
}
case ProcessResults(resultDetails) => { //sent from the remote workers when they complete their work
//do something with the results
if(all of the results have been received){
//*********************
self ! EndProcess //This is the line in question
//*********************
}
}
case EndProcess {
//do some reporting
//shutdown the ActorSystem
}
}
}

如何在测试中验证 EndProcess 消息是否发送给自己?

我正在使用 scalatest 2.0.M4、Akka 2.0.3 和 Scala 1.9.2。

最佳答案

向自身发送的 actor 非常详细地说明了该 actor 如何执行特定功能,因此我宁愿测试该消息的效果,也不愿测试该消息是否已传递。我认为发送给 self 与在经典 OOP 中对对象使用私有(private)辅助方法是一样的:您也不测试该方法是否被调用,而是测试最终是否发生了正确的事情。

附带说明:您可以实现自己的消息队列类型(请参阅 https://doc.akka.io/docs/akka/snapshot/mailboxes.html#creating-your-own-mailbox-type )并允许检查或跟踪消息发送。这种方法的美妙之处在于它可以完全通过配置插入被测 actor。

关于scala - 在测试 Akka actor 时,如何验证发送给自己的消息是否已送达?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12482443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com