Мы внедряем свойство внутри нашего класса (который является конечной точкой REST) следующим образом:
@Inject
@ConfigProperty(name = "PassInstance") String uniquePass;
Мы храним это свойство в файле microprofile-config.properties, и оно работает нормально.
Мы хотели бы протестировать это с помощью JUnit 5, JerseyTest и Mockito.
Мы вообще не можем имитировать ConfigProperty.
Но более того, когда мы вызываем нашу конечную точку используя target ("endpoint"). request.get / post , он не работает с ошибкой:
There was no object available for injection at
SystemInjecteeImpl(requiredType=String,parent=RESTServiceClass,
qualifiers={@org.eclipse.microprofile.config.inject.ConfigProperty
(name=PassInstance,
defaultValue=org.eclipse.microprofile.config.configproperty.unconfigureddvalue)},
position=-1,optional=false,self=false,unqualified=null,333650968)
Я прочитал следующую статью https://github.com/payara/Payara/issues/4364, где разработчик предлагает использовать отражение и установить значение. Когда я запускаю в тесте следующий код:
Annotation[] annotations = someObj.getClass().getDeclaredAnnotations();
Этот массив имеет только следующее:
@javax.ejb.Stateless(name=, description=, mappedName=)
@javax.ejb.LocalBean()
@javax.ws.rs.Path(value=/pathtorest)
Как я могу ввести это и правильно протестировать мою службу. Я использую JUnit 5, MP 1.2, Mockito, CDI.
Спасибо.