使用akka键入:2.6.10.我的父节点生成子参与者来做一些工作,正如你在下面看到的(注意这是事件源参与者的一部分)。有没有一种方法可以在测试期间使用可能的名称来获取对内部创建的子参与者的引用?
例如,下面我们有一个在初始化时创建的子actor provider_1
,我希望从外部使用此名称获取对TestProbe的引用。我不愿意为了测试而更改代码的结构方式,例如,在这里有一些引用传入ref/factory或在测试中重新构造父代,以便测试这一点,我希望避免这种情况。
def commandHandler(
ctx: ActorContext[Command]
): (State, Command) => Effect[Event, State] = { (state, cmd) =>
cmd match {
case Init =>
ctx.spawn(Provider(ctx.self), "provider_1")
Effect.none
}
}
1条答案
按热度按时间waxmsbnn1#
如果您使用
BehaviorTestKit
来测试actor,则actor将使用另一个ActorContext
实现来运行。因此,使用scalatest匹配器,下面的代码应该可以工作(请注意,
akka.actor.testkit.typed.Effect
在持久性方面与Effect
没有什么关系):akka.actor.testkit.typed.scaladsl.TestInbox
旨在作为异步TestProbe
的同步行为测试模拟。我不知道异步
ActorTestKit
有什么类似的方法,在这里实际上会产生一个子参与者。