首页 > 解决方案 > Quarkus - 如何使用多个反应式 PgPool 测试 CDI 服务

问题描述

我有一个 CDI bean,我在其中注入了一些反应性数据源,如此处所述

我尝试测试我的服务,但我不知道如何模拟所有 PgPool(我应该模拟它们吗?)?我尝试了这里解释的“测试容器”方法

我注意到主要实现不使用 @Inject 注释:请参见此处 为什么?

我在运行测试时得到了这个堆栈:

java.lang.RuntimeException: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
    [error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type io.vertx.mutiny.pgclient.PgPool and qualifiers [@Default]
    - java member: sncf.mobilite.groupehv.mytraindata.service.SignalementsScheduler#AGCClient
    - declared on CLASS bean [types=[sncf.mobilite.groupehv.mytraindata.service.SignalementsScheduler, java.lang.Object], qualifiers=[@Default, @Any], target=sncf.mobilite.groupehv.mytraindata.service.SignalementsScheduler]
    at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:1078)
    at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:255)
    at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:129)
    at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:428)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:920)
    at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
    at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2415)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
    at java.base/java.lang.Thread.run(Thread.java:834)
    at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type io.vertx.mutiny.pgclient.PgPool and qualifiers [@Default]
    - java member: sncf.mobilite.groupehv.mytraindata.service.SignalementsScheduler#AGCClient
    - declared on CLASS bean [types=[sncf.mobilite.groupehv.mytraindata.service.SignalementsScheduler, java.lang.Object], qualifiers=[@Default, @Any], target=sncf.mobilite.groupehv.mytraindata.service.SignalementsScheduler]
    at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:484)
    at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:378)
    at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:247)
    ... 12 more

quarkus 文档有很多使用 Panache 实体测试持久性的示例,但没有使用反应池测试持久性的示例。

怎么做 ?

谢谢!

标签: vert.xquarkusmutiny

解决方案


推荐阅读