import akka.actor.AbstractActor;
import akka.actor.ActorRef;
import akka.actor.ActorSystem;
import akka.actor.Props;
import akka.testkit.javadsl.TestKit;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
class StringProcessor extends AbstractActor {
@Override
public Receive createReceive() {
return receiveBuilder()
.match(String.class, message -> {
String processedMessage = processString(message);
sender().tell(processedMessage, self());
})
.build();
}
private String processString(String message) {
return message.toUpperCase();
}
}
public class StringProcessorTest {
static ActorSystem system;
ActorRef stringProcessor;
@BeforeClass
public static void setup() {
system = ActorSystem.create();
}
@AfterClass
public static void teardown() {
TestKit.shutdownActorSystem(system);
system = null;
}
@Test
public void testStringProcessor() {
new TestKit(system) {
{
stringProcessor = system.actorOf(Props.create(StringProcessor.class));
stringProcessor.tell("hello", getRef());
expectMsg("HELLO");
}
};
}
}