gpt4 book ai didi

java - 我们如何为 akka 无类型处理器编写单元测试

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:07 26 4
gpt4 key购买 nike

我创建了一个扩展 UnTypedProcessor 的 actor。我打算使用这个角色将一些消息保存到磁盘上。 Actor 长得像这样

public class Shard extends UntypedProcessor {

LoggingAdapter log = Logging.getLogger(getContext().system(), this);

@Override
public void onReceive(Object message) throws Exception {
if(message instanceof CreateTransactionChain) {
System.out.println("Received a CreateTransactionChain message");
ActorRef transactionChain = getContext().actorOf(Props.create(TransactionChain.class), "transactionChain");
Address address = transactionChain.path().address();
getSender().tell(new CreateTransactionReply(address), getSelf());
}
}
}

我为此编写了一个单元测试,如下所示,

public class ShardTest extends AbstractActorTest{
@Test
public void testOnReceiveCreateTransaction() throws Exception {
System.out.println("running tests");

new JavaTestKit(getSystem()) {{
final Props props = Props.create(Shard.class);
final TestActorRef<Shard> subject = TestActorRef.create(getSystem(), props, "test");

// can also use JavaTestKit “from the outside”
final JavaTestKit probe = new JavaTestKit(getSystem());

// the run() method needs to finish within 3 seconds
new Within(duration("3 seconds")) {
protected void run() {

subject.tell(new CreateTransactionChain(), getRef());

final String out = new ExpectMsg<String>("match hint") {
// do not put code outside this method, will run afterwards
protected String match(Object in) {
if (in instanceof CreateTransactionReply) {
return "match";
} else {
throw noMatch();
}
}
}.get(); // this extracts the received message

assertEquals("match", out);

// Will wait for the rest of the 3 seconds
expectNoMsg();
}


};
}};
}
}

当我运行此测试时,不会调用 UntypeProcessor 的 onReceive 方法。如果我从 UntypedActor 扩展我的类,那么一切都会正常工作。任何想法为什么扩展 UntypedProcessor 不起作用?我需要添加一些配置才能使其正常工作吗?有什么需要 mock 的吗?

最佳答案

akka-persistence 不能与 TestActorRef 提供的线程调度程序一起使用。我们需要切换到使用简单的 ActorRef,以便可以使用多线程调度程序进行测试。

这个 github 问题讨论了同样的问题:- https://github.com/akka/akka/issues/15293

关于java - 我们如何为 akka 无类型处理器编写单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24254320/

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