gpt4 book ai didi

java - 使用 Akka(使用 Java)如何验证我的被测 Actor 正在观看另一个 Actor ?

转载 作者:搜寻专家 更新时间:2023-11-01 01:28:11 25 4
gpt4 key购买 nike

我有以下 Actor ,我想为其创建单元测试以验证以下行为:

  1. ListeningActor 正确注册自己以观看 listeningTo actor。
  2. listeningTo actor 终止时,
  3. ListeningActor 正确地杀死了自己。

如何验证这两种行为?

我在 Java 中使用 Akka 2.0.2。

谢谢

public class ListeningActor extends UntypedActor {
private final ActorRef listeningTo;

public ListeningActor(final ActorRef listeningTo) {
this.listeningTo = listeningTo;
}

@Override
public void preStart() {
super.preStart();
context().watch(listeningTo); // <---- To verify
}

@Override
public void onReceive(final Object o) throws Exception {
if (o instanceof Terminated) {
Terminated terminated = (Terminated) o;
if (terminated.equals(listeningTo)) {
context().stop(self()); // <---- To verify
}
} else {
unhandled(o);
}
}
}

最佳答案

如果对任何人有帮助,这是我的最终单元测试:

public class ListeningActorTest
{
private TestKit testKit;
private TestActorRef<ListeningActor> listeningActor;
private TestProbe listeningToActor;

@Before
public void setUp() throws Exception
{
testKit = new TestKit(ActorSystem.apply());
listeningToActor = TestProbe.apply(testKit.system());
listeningActor = TestActorRef.apply(new Props(new UntypedActorFactory()
{
@Override
public Actor create()
{
return new ListeningActor(listeningToActor.ref());
}
}), testKit.system());
}

@Test
public void shouldTerminateWhenTheListeningToActorTerminates()
{
//Given
assertFalse(listeningActor.isTerminated());

//When
listeningToActor.testActor().tell(PoisonPill.getInstance());

//Then
assertTrue(listeningActor.isTerminated());
}
}

关于java - 使用 Akka(使用 Java)如何验证我的被测 Actor 正在观看另一个 Actor ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11083025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com