我有ParentActor和ChildActor,如下所示:
class ParentActor extends UntypedActor {
final ActorSystem system = ActorSystem.create("MySystem");
final ActorRef child = system.actorOf(Props.create(ChildActor.class), "child")
@Override
void onReceive(Object message) throws Exception {
if (message instanceof String) {
getContext().watch(child)
child.tell(message, getSelf())
} else {
unhandled(message)
}
}
}
class ChildActor extends UntypedActor {
@Override
void onReceive(Object message) throws Exception {
if (message instanceof String) {
context().parent().tell("Hello from child actor!", self());
}
}
}
我想测试父和子之间的关系(如果我发送String消息给ParentActor确保孩子已经得到它),使用TestKit和java。你能帮我解决这个问题吗?
答案 0 :(得分:0)
更改您的父级 - 通过构造函数注入Child
actor Props
。并通过构造函数更改您的Child
- 注入父引用。在测试时创建Parent
注入另一个Child
Props
,它接受测试actor作为参数。变化:
context().parent().tell("Hello from child actor!", self());
到
parentField.tell("Hello from child actor!", self());
然后在您的测试中使用akka test actor而不是Parent
并将其传递给Child。您可以通过expectMsgEquals
方法查看回复。