Quarkus getting started unittest décrit comment simuler des services injectés. Cependant, lorsque j'essaie d'appliquer cela à un client REST injecté, cela ne semble pas fonctionner.
Dans mon application, l'attribut de classe à injecter est défini comme ceci
@Inject
@RestClient
MyService myService;
Dans mon code de test, j'ai créé un service de simulation de cette manière:
@Alternative()
@Priority(1)
@ApplicationScoped
public class MockMyService extends MyService {
@Override
public MyObject myServicemethos() {
return new MyObject();
}
}
Veuillez noter que ce service n'est pas enregistré ou annoté en tant que RestClient. Exécuter mes tests unitaires de cette manière donne l'erreur suivante:
org.junit.jupiter.api.extension.TestInstantiationException: TestInstanceFactory [io.quarkus.test.junit.QuarkusTestExtension] n'a pas pu instancier la classe de test [...MyMediatorTest]: io.quarkus.builder.BuildException: Échec de la construction: L'échec de la construction est dû à des erreurs
[error]: L'étape de construction io.quarkus.arc.deployment.ArcAnnotationProcessor#build a levé une exception: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: Dépendance non satisfaite pour le type ...MyService et les qualificateurs [@RestClient]
- membre java: ...MyMediator#myService
- déclaré sur la CLASS bean [types=[java.lang.Object, ...MyMediator], qualifiers=[@Default, @Any], target=...MyMediator]
at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.invokeTestInstanceFactory(ClassTestDescriptor.java:314)
...
Je peux probablement résoudre cela en ajoutant une couche de service supplémentaire. Mais cela semble être une mauvaise direction à prendre.
Comment puis-je résoudre cela.
Cordialement,
misl