如何测试akka actor消息是否发送给它的孩子

时间:2015-08-12 14:35:00

标签: java akka

我有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。你能帮我解决这个问题吗?

1 个答案:

答案 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方法查看回复。