Scala 如何测试参与者是否能够接收消息?

Scala 如何测试参与者是否能够接收消息?,scala,akka,akka-testkit,Scala,Akka,Akka Testkit,我有下面的演员,他收到两条信息: class SampleActor extends Actor { def receive = { case "hello" => println("Hello Message") case "world"=>println("World Message") case _=>println("Unhandled message") } } } 我想测试演员是否能够接收“hello”和“world”消息。

我有下面的演员,他收到两条信息:

class SampleActor extends Actor {
  def receive = {
    case "hello" => println("Hello Message")
    case "world"=>println("World Message")
    case _=>println("Unhandled message")
    }
  }
}
我想测试演员是否能够接收“hello”和“world”消息。我所看到的例子不符合这一要求

然后让参与者发回一条消息,并使用expectMsg()检查响应。但我的要求是看参与者是否能够接收到消息,而不是看参与者是否能够用特定的消息做出回应

该示例更改参与者的状态,并检查该状态以查看参与者是否能够接收消息。再说一次,不是我想要的


那么,我如何通过TestKit测试我的参与者是否能够处理这两条消息呢?

在创建参与者的地方,使用
TestProbe
。这很容易成为参与者模型本身的一个哲学问题。基本上,您希望测试您的参与者是否响应特定消息(或特定类型的消息)。您只能通过检查您的参与者应该采取的预期行为是否在收到消息后发生来做到这一点。也就是说,例如,如果参与者执行IO(即以某种方式回复发件人)或更新某些状态。您的
SampleActor
什么都不做。从外部世界,你总是可以向演员发送任何东西。它可能对他不关心的消息没有任何作用。在创建参与者的地方,使用
TestProbe
。这很容易成为参与者模型本身的一种哲学。基本上,您希望测试您的参与者是否响应特定消息(或特定类型的消息)。您只能通过检查您的参与者应该采取的预期行为是否在收到消息后发生来做到这一点。也就是说,例如,如果参与者执行IO(即以某种方式回复发件人)或更新某些状态。您的
SampleActor
什么都不做。从外部世界,你总是可以向演员发送任何东西。它可能对他不关心的消息没有任何作用。