Все возможные рекомендации по введению исчерпаны, и для метода не найдена реализация: HttpResponse post (TagRequest arg0JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Все возможные рекомендации по введению исчерпаны, и для метода не найдена реализация: HttpResponse post (TagRequest arg0

Сообщение Anonymous »

У меня есть интерфейс ниже как общее действие Http для GET, PUT, POST и DELETE
@Validated
@ExecuteOn(TaskExecutors.BLOCKING)
public interface IHttpAction {

@Get(value = "/{?searchCriteria*}")
HttpResponse find(@QueryValue T searchCriteria);

@Get(uri = "/{id}")
HttpResponse get(@Nonnull UUID id);

HttpResponse post(@Body T request);

@Put(uri = "/{id}")
HttpResponse put(@NotNull UUID id, @Body T request);

HttpResponse delete(@NotNull UUID id);
}

Теперь у меня есть декларативный клиент micronuat, как показано ниже
public class TestHttpClient {
@Client("/tag")
public interface TagHttpClient extends IHttpAction { }
}

Теперь я пишу тестовый пример, как показано ниже
@MicronautTest
public class TagControllerTest {
private final TestHttpClient.TagHttpClient testHttpClient;

public TagControllerTest(TestHttpClient.TagHttpClient testHttpClient) {
this.testHttpClient = testHttpClient;
}

@Test
@DisplayName("Should create a tag with valid name")
void shouldCreateATagWithValidName() {

var result = this.testHttpClient.post(new TagRequest("schoolstaff"));
Assertions.assertNotNull(result);
}
}

Контроллер реализует одно и то же действие IHttpAction с TagRequest и TagResponse
@Controller("/tag")
@Version("1")
public class TagController implements IHttpAction {
private final IServiceAction iServiceAction;

public TagController(IServiceAction iServiceAction) {
this.iServiceAction = iServiceAction;
}

@Override
public HttpResponse post(TagRequest request) {
var result = this.iServiceAction.post(request);
return result.match(()-> HttpResponse.ok(result.value), ()->HttpResponse.notFound(result.exception.getMessage()));
}

// Other implementation

}

Когда я запускаю тестовый пример, возникает следующая проблема
All possible Introduction advise exhausted and no implementation found for method: HttpResponse post(TagRequest arg0)
io.micronaut.aop.exceptions.UnimplementedAdviceException: All possible Introduction advise exhausted and no implementation found for method: HttpResponse post(TagRequest arg0)
at io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:132)
at io.micronaut.http.client.interceptor.HttpClientIntroductionAdvice.intercept(HttpClientIntroductionAdvice.java:202)
at io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:143)
at io.micronaut.validation.ValidatingInterceptor.validateReturnMicronautValidator(ValidatingInterceptor.java:153)
at io.micronaut.validation.ValidatingInterceptor.intercept(ValidatingInterceptor.java:139)
at io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:143)
at schoolstaff.TestHttpClient$TagHttpClient$Intercepted.post(Unknown Source)
at schoolstaff.integration.TagControllerTest.shouldCreateATagWithValidName(TagControllerTest.java:27)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at io.micronaut.test.extensions.junit5.MicronautJunit5Extension$2.proceed(MicronautJunit5Extension.java:142)
at io.micronaut.test.extensions.AbstractMicronautExtension.interceptEach(AbstractMicronautExtension.java:162)
at io.micronaut.test.extensions.AbstractMicronautExtension.interceptTest(AbstractMicronautExtension.java:119)
at io.micronaut.test.extensions.junit5.MicronautJunit5Extension.interceptTestMethod(MicronautJunit5Extension.java:129)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)


Подробнее здесь: https://stackoverflow.com/questions/792 ... -for-metho
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»