Как высмеять общий класс подстановочных знаков?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как высмеять общий класс подстановочных знаков?

Сообщение Anonymous »


У меня есть общая переменная, т.е.

ParameterizedTypeReferenceparameterizedTypeReference = new ParameterizedTypeReference() {} Фактический метод выглядит так:

public U post (String serviceUrl, T data, ParameterizedTypeReference ref, String BearerToken) { ParameterizedTypeReferenceparameterizedTypeReference = новый ParameterizedTypeReference() { }: вар ответBodyMono = веб-клиент .почта() .uri(URL-адрес службы) .header(HttpHeaders.AUTHORIZATION, BearerToken) .header(X_CORRELATION_ID, MDC.get(X_CORRELATION_ID)) .body(Mono.just(data),parameterizedTypeReference) // Я хочу посмеяться над этим } Я написал тестовый пример типа

@Mock WebClient.RequestHeadersSpec requestHeadersSpec; @Насмехаться WebClient.RequestHeadersUriSpec requestHeadersUriSpec; @Насмехаться WebClient.RequestBodyUriSpec requestBodyUriSpec; @Тест общественный недействительный testPost() { ПараметризованнаяСсылкаТипа параметризованнаяСсылкаТип1 = новый ПараметризованнаяСсылкаТип() {}; Mockito.when(webClient.post()).thenReturn(requestBodyUriSpec); когда (requestBodyUriSpec.uri(SERVICE_URL)).thenReturn(requestBodySpec); когда (requestBodySpec.header (eq (HttpHeaders.AUTHORIZATION), eq (BEARER_TOKEN))).thenReturn (requestBodyUriSpec); когда (requestBodyUriSpec.header(anyString(), Mockito.isNull())).thenReturn(requestBodyUriSpec); когда (requestBodyUriSpec.body(Mono.just(anyString()), eq(parameterizedTypeReference1))).thenReturn(requestHeadersSpec); // Здесь я попытался издеваться AssertNotNull(webClientService.post(SERVICE_URL, Collections.emptyList(), параметризованныйTypeReference, BEARER_TOKEN)); } Но я получаю сообщение об ошибке

org.mockito.Exceptions.misusing.PotentialStubbingProblem: Строгое несоответствие аргументов. Пожалуйста, проверьте: - этот вызов метода body: requestBodyUriSpec.body( МоноЮст, ПараметризованнаяСсылкаТипа ); -> в com.radisys.macs.cems.common.webclient.WebClientService.getResponseEntity(WebClientService.java:310) - имеет следующие заглушки с разными аргументами: 1. requestBodyUriSpec.body(MonoJust, null); -> в com.radisys.macs.cems.common.webclient.WebClientServiceTest.testGetResponseEntity(WebClientServiceTest.java:224) Как может parameterizedTypeReference иметь значение null? Когда я красиво посмеялся над этим?

ИЗМЕНИТЬ После попытки ответить возникла следующая ошибка

java: не найден подходящий метод для thenReturn(reactor.core.publisher.Mono) метод org.mockito.stubbing.OngoingStudding.thenReturn(reactor.core.publisher.Mono) неприменимо (несоответствие аргументов; переменная вывода T имеет несовместимые границы ограничения равенства: захват № 1 из ? нижние границы: java.util.List) метод org.mockito.studding.OngoingStudding.thenReturn(reactor.core.publisher.Mono,reactor.core.publisher.Mono...) неприменимо (несоответствие аргументов; переменная вывода T имеет несовместимые границы ограничения равенства: захват № 1 из ? нижние границы: java.util.List) РЕДАКТИРОВАНИЕ 2

Изменено на

ПараметризованнаяСсылкаТипаparameterizedTypeReference1 = новая ПараметризованнаяСсылкаТипа() {}; // удалено org.mockito.Exceptions.misusing.PotentialStubbingProblem: Строгое несоответствие аргументов. Пожалуйста, проверьте: - этот вызов метода body: requestBodyUriSpec.body( МоноЮст, ParameterizedTypeReference ); -> на com.radisys.macs.cems.common.webclient.WebClientService.post(WebClientService.java:185) - имеет следующие заглушки с разными аргументами: 1. requestBodyUriSpec.body (нуль, ноль); -> на com.radisys.macs.cems.common.webclient.WebClientServiceTest.testPost(WebClientServiceTest.java:131) Дополнительную информацию, пожалуйста, проигнорируйте для SO

Если это поможет ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

Для приведенного ниже кода

public U update(String serviceUrl, T payload, ParameterizedTypeReference ref, StringbearerToken) { LOGGER.atFine().log(SERVICE_URL_LOGGER, serviceUrl); ParameterizedTypeReference параметризованныйTypeReference = новый ParameterizedTypeReference() { }; Mono responseStatusMono = webClient .помещать() .uri(URL-адрес службы) .header(HttpHeaders.AUTHORIZATION, BearerToken) .header(X_CORRELATION_ID, MDC.get(X_CORRELATION_ID)) .body(Mono.just(полезная нагрузка), параметризованныйTypeReference) .забрать() .onStatus(HttpStatusCode::isError, ответ -> com.radisys.macs.cems.common.webclient.SBServiceErrorHandlerUtil.logAndGetThrowableMono(serviceUrl, ответ)) .bodyToMono(ссылка) .doOnError(com.radisys.macs.cems.common.webclient.SBServiceErrorHandlerUtil::handleConnectionErrors); вар responseStatus = responseStatusMono.block(); LOGGER.atFine().log("Ответ операции обновления от службы SB: %s", responseStatus); вернуть статус ответа; } Тестовый пример

@Test общественный недействительный testUpdate() { когда (webClient.put()).thenReturn (requestBodyUriSpec); когда (requestBodyUriSpec.uri (WebClientServiceTest.SERVICE_URL)).thenReturn (requestBodySpec); когда (requestBodySpec.header (eq (HttpHeaders.AUTHORIZATION), eq (WebClientServiceTest.BEARER_TOKEN))).thenReturn (requestBodyUriSpec); когда (requestBodyUriSpec.header(anyString(), Mockito.isNull())).thenReturn(requestBodyUriSpec); когда (requestBodyUriSpec.body (любой (), любой (ParameterizedTypeReference.class))).thenReturn (requestHeadersSpec); когда (requestHeadersSpec.retrieve()).thenReturn (responseSpec); когда (responseSpec.onStatus(any(), Any())).thenReturn(responseSpec); когда (responseSpec.bodyToMono(eq(parameterizedTypeReference))).thenReturn(Mono.just(Collections.singletonList("record1"))); AssertNotNull(webClientService.update(WebClientServiceTest.SERVICE_URL, Collections.emptyList(), параметризованныйTypeReference, WebClientServiceTest.BEARER_TOKEN)); } Приведенное ниже изображение работает нормально, но для публикации оно не работает. Я поражен тем, как оно работает для обновления, а не для запроса публикации :(
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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