gpt4 book ai didi

使用 Akka 进行 Scala Testkit 单元测试

转载 作者:行者123 更新时间:2023-11-28 20:54:21 25 4
gpt4 key购买 nike

我正在使用 TestKit 测试我正在从事的涉及 Akka Actors 的 Scala 项目的一些类,我遇到了这个问题:

一个或多个请求的类不是套件:poc.PocConstituentsWatcher

有问题的类如下所示:

class PocConstituentsWatcher(_system: ActorSystem) extends TestKit(_system) with ImplicitSender with WordSpecLike with Matchers with BeforeAndAfter with BeforeAndAfterAll {

我以前没有这个问题,因为我有

def this() = this(ActorSystem)

但现在我通过注入(inject)定义了我自己的 ActorSystem,所以我有 val actorSystem = injector.instance[ActorSystem] 而当我这样做时

def this() = this(actorSystem)

我收到一条错误消息,提示找不到 actorSystem。我认为这是因为构造函数签名不正确?感谢您的帮助。

编辑:

展示了如何注入(inject)我的 Actor 系统。

val injector = Guice.createInjector(new AkkaModule)
val actorSystem = injector.instance[ActorSystem]

在 AkkaModule 中

object AkkaModule {
class ActorSystemProvider @Inject() (val config: Config, val injector: Injector) extends Provider[ActorSystem] {
override def get() = {
val system = ActorSystem("poc-actor-system", config)
GuiceAkkaExtension(system).initialize(injector)

system
}
}
}

class AkkaModule extends AbstractModule with ScalaModule {

override def configure() {
bind[ActorSystem].toProvider[ActorSystemProvider].asEagerSingleton()
}
}

最佳答案

我最终使用了

def this() = this(ActorSystem("poc-actor-system")) 有效但有点令人担忧,因为从技术上讲,默认构造函数不使用相同的 actor 系统我创建了 val actorSystem = injector.instance[ActorSystem]。如果将来有任何问题会报告......

关于使用 Akka 进行 Scala Testkit 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31794455/

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