У меня есть интерфейс ниже как общее действие 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
Все возможные рекомендации по введению исчерпаны, и для метода не найдена реализация: HttpResponse post (TagRequest arg0 ⇐ JAVA
Программисты JAVA общаются здесь
1734243309
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)
Подробнее здесь: [url]https://stackoverflow.com/questions/79281894/all-possible-introduction-advise-exhausted-and-no-implementation-found-for-metho[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия