class MyActor extends AbstractActor { private int state = 0; @Override public Receive createReceive() { return receiveBuilder() .match(Increment.class, this::incrementState) .build(); } private void incrementState(Increment message) { state += message.getValue(); } } @Test public void testMyActor() { TestActorRef<MyActor> actorRef = TestActorRef.create(system, Props.create(MyActor.class)); actorRef.tell(new Increment(5), ActorRef.noSender()); MyActor actor = actorRef.underlyingActor(); assertEquals(5, actor.getState()); } class MyActor extends AbstractActor { private ActorRef otherActor; @Override public Receive createReceive() { return receiveBuilder() .match(Init.class, this::init) .match(SendMessage.class, this::sendMessage) .build(); } private void init(Init message) { this.otherActor = message.getOtherActor(); } private void sendMessage(SendMessage message) { otherActor.tell(message, getSelf()); } } @Test public void testMessagePassing() { TestProbe probe = TestProbe.create(system); TestActorRef<MyActor> actorRef = TestActorRef.create(system, Props.create(MyActor.class)); actorRef.tell(new Init(probe.ref()), ActorRef.noSender()); actorRef.tell(new SendMessage("Hello"), ActorRef.noSender()); probe.expectMsgClass(SendMessage.class); } class SupervisorActor extends AbstractActor { private ActorRef worker1; private ActorRef worker2; @Override public Receive createReceive() { return receiveBuilder() .match(Start.class, this::start) .build(); } private void start(Start message) { worker1.tell(new DoWork(), getSelf()); worker2.tell(new DoWork(), getSelf()); } } @Test public void testInteraction() { TestActorRef<SupervisorActor> supervisorRef = TestActorRef.create(system, Props.create(SupervisorActor.class)); TestActorRef<WorkerActor> worker1Ref = TestActorRef.create(system, Props.create(WorkerActor.class)); TestActorRef<WorkerActor> worker2Ref = TestActorRef.create(system, Props.create(WorkerActor.class)); supervisorRef.underlyingActor().setWorkerActors(worker1Ref, worker2Ref); supervisorRef.tell(new Start(), ActorRef.noSender()); expectMsgClass(DoWork.class); expectMsgClass(DoWork.class); }


上一篇:
下一篇:
切换中文