0

一部のアクターが、よく知られたアクター (固定名) に直接届いたメッセージに返信するアクター階層を構築しています。つまり、これらのアクター (階層から遠く離れている) は、 を介して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

4

2 に答える 2

1

コンストラクターを介してアドレスを挿入しても問題はありません。基本的にあなた自身の質問に答えたので、現時点ではこれをより明確にする方法がわからないため、詳細が必要な場合はお知らせください。ところで、あなたが使用している Akka のバージョンはわかりませんが、actorFor最近廃止され、が推奨されていActorSelectionます。これには十分な理由があります。

于 2013-08-30T09:22:25.943 に答える