一部のアクターが、よく知られたアクター (固定名) に直接届いたメッセージに返信するアクター階層を構築しています。つまり、これらのアクター (階層から遠く離れている) は、 を介してactorRef を取得しcontext.actorFor("akka://...")
ます。
つまり、たとえば、「オーケストレーション」アクターがあります。
system.actorOf(Props[OrchestratingActor], name = "オーケストレーター")
次に、その種類のアドレスを持ちますakka://application/user/orchestrator
そして別の場所で、メッセージを受信し、オーケストレーターと通信したいランダムなワーカー:
class RandomWorker extends Actor {
def theOrchestrator = context.actorFor("akka://application/user/orchestrator")
def receive = {
case Foo =>
theOrchestrator ! "Bar"
}
}
今、私はそれらのアクターをテストしたいのですが、これらのアドレスをどのように処理するかについて疑問に思っています: アクターを単体テストするとき (たとえば、TestActorRef を使用して)、リモート アドレスに送信されているものを確認するにはどうすればよいですか? 1 つのアイデアは、(可能な場合) コンストラクターを介して既知のアクターにアドレスを提供し、TestActor のアドレスを渡して、何が受信されているかを確認することです。ただし、テストで特定のアドレスを「偽装」する方法がないのではないかと思います。アドレスが単純でない場合。
つまり、アクターの動作をテストしたいと思います (実際に"Bar"
、Foo