Lagom - 如何在服务集成测试中使用事件处理器?
Lagom - How can I use event processor in a service integration test?
我正在 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]
}
为了解决这个问题,我不得不使用 WordSpec
而不是 AsyncWordSpec
,默认的执行上下文以某种方式与 Lagom 混淆,此外我还必须添加一个 eventually
块来检查如果状态更新是因为事件处理不是立即进行的,大约需要 30 秒。
我正在 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]
}
为了解决这个问题,我不得不使用 WordSpec
而不是 AsyncWordSpec
,默认的执行上下文以某种方式与 Lagom 混淆,此外我还必须添加一个 eventually
块来检查如果状态更新是因为事件处理不是立即进行的,大约需要 30 秒。