【发布时间】:2018-01-16 15:05:56
【问题描述】:
我正在 Lagom (scala) 中构建一个身份验证服务,它由一个设备实体和一个事件处理器组成。该服务使用 JDBC 插件而不是默认的 Cassandra。在编写集成测试时,我发现事件处理器并没有在事件上被调用,只是为了初始化。我不知道如何接近......
abstract class AuthApplication(context: LagomApplicationContext) extends LagomApplication(context)
with JdbcPersistenceComponents
with AhcWSComponents
with HikariCPComponents {
override lazy val lagomServer = serverFor[AuthService](wire[AuthServiceImpl])
lazy val jsonSerializerRegistry = AuthSerializerRegistry
lazy val jwtAuthenticator: PkiAuthenticator = new JwtAuthenticator(config.getConfig("jwt"))
lazy val tokenRepository = wire[TokenRepository]
persistentEntityRegistry.register(wire[DeviceEntity])
readSide.register(wire[DeviceEventProcessor])
wire[TokenScheduler]
}
集成测试初始化:
override def beforeAll: Unit = {
server = ServiceTest.startServer(ServiceTest.defaultSetup.withCassandra(true)) { ctx =>
new ServiceTestApplication(ctx)
}
authService = server.serviceClient.implement[AuthService]
}
【问题讨论】:
-
通常我会在这些类型的测试中使用
withClient模式,而不是beforeAll。不确定这是否能解决任何问题,但这只是一个风格点。 -
其实可以解决一些问题...如果
authService是var,那么它的初始值就是null,所以服务的初始化方式可能会有副作用工作。 -
withClient这个功能是什么,我不熟悉? -
类似this.
-
太棒了!我很快就会试一试。谢谢
标签: scala integration-testing lagom