Spring webclient 模拟webclient中的问题
我试图用mockito模拟这个端点,但我得到了内部服务器错误。早些时候,我们使用的交换方法导致内存泄漏问题,然后将其更改为检索,但测试用例失败。我尝试了所有方法,但无法解决。我不确定我在哪里出错。需要你们帮忙Spring webclient 模拟webclient中的问题,spring-webclient,Spring Webclient,我试图用mockito模拟这个端点,但我得到了内部服务器错误。早些时候,我们使用的交换方法导致内存泄漏问题,然后将其更改为检索,但测试用例失败。我尝试了所有方法,但无法解决。我不确定我在哪里出错。需要你们帮忙 public static Mono<? extends ExternalApiResponse> invokeWebClientEndpoint( WebClient webClient, ExternalApiRequest
public static Mono<? extends ExternalApiResponse> invokeWebClientEndpoint(
WebClient webClient,
ExternalApiRequest externalApiRequest, AuditMessageProducer auditMessageProducer) {
auditMessageProducer.publishOfferDescriptionAuditMessage(AuditSource.EMJU_XAPI_OFFERS, externalApiRequest,
AuditStatus.SUCCESS, null, null);
Class<? extends ExternalApiResponse> responseClass;
if(!(externalApiRequest.getAppName().isEmpty())) {
if (externalApiRequest.getName().equals("OfferDefinitionApiRequest")) {
responseClass = OfferDefinitionResponse.class;
} else {
responseClass = GalleryResponse.class;
}
}else {
log.warn("invokeWebClientEndpoint :: Not a valid externalApiRequest Name: ", externalApiRequest.getAppName());
throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR,String.format("Invalid externalApiRequest name",externalApiRequest.getAppName()));
}
return webClient.get().uri(externalApiRequest.getUrlString()).accept(MediaType.APPLICATION_JSON)
.headers(httpHeader -> httpHeader.addAll(externalApiRequest.getHeaders()))
.retrieve()
.onStatus(HttpStatus::is4xxClientError, clientResponse -> {
ResponseStatusException responseStatusException = new ResponseStatusException(
HttpStatus.INTERNAL_SERVER_ERROR,
String.format("Attempting to pull content from the Application " + externalApiRequest.getAppName()
+ " but resulted in error. Status: ", clientResponse.statusCode()));
return Mono.error(responseStatusException);
})
.onStatus(HttpStatus::is5xxServerError, clientResponse -> {
ResponseStatusException responseStatusException = new ResponseStatusException(
HttpStatus.INTERNAL_SERVER_ERROR,
String.format("Attempting to pull content from the Application " + externalApiRequest.getAppName()
+ " but resulted in error. Status: ", clientResponse.statusCode()));
return Mono.error(responseStatusException);
})
.bodyToMono(responseClass)
.timeout(Duration.ofMillis(externalApiRequest.getTimeOut()));
}
}
publicstaticmono
public void testXapiOfferDescWebSignInUserTest() {
XApiContextBuilder xApiContextBuilder = XApiContext.builder();
Map<String, String> headers = new HashMap<String, String>();
headers.put("x-swyconsumerdirectorypro", "eyJraWQiOiJHT1RLUXY2NG40N3ZRVjVuaGNGSVVveVNtaWhtQTM5V0N4TFNxVXY4WFVrIiwiYWxnIjoiUlMyNTYifQ");
xApiContextBuilder.headers(headers);
XApiContext xApiContext = xApiContextBuilder.build();
OfferDefinitionResponse offerDefinitionResponse = new OfferDefinitionResponse();
offerDefinitionResponse.setOfferId(179982937L);
GalleryResponse galleryResponse = new GalleryResponse();
List<Offer> offerList = new ArrayList<Offer>();
offerList.add(getOffer());
galleryResponse.setPD(offerList);
ResponseSpec clientResponse = Mockito.mock(ResponseSpec.class);
ResponseSpec mockResponse = mock(ResponseSpec.class);
RequestHeadersUriSpec requestHeaderUriSpec = Mockito.mock(RequestHeadersUriSpec.class);
RequestHeadersSpec requestHeaderSpec = Mockito.mock(RequestHeadersSpec.class);
Mockito.when(offerWebClient.get()).thenReturn(requestHeaderUriSpec);
Mockito.when(requestHeaderUriSpec.uri(Mockito.anyString())).thenReturn(requestHeaderSpec);
Mockito.when(requestHeaderSpec.accept(Mockito.any())).thenReturn(requestHeaderSpec);
Mockito.when(requestHeaderSpec.headers(Mockito.any())).thenReturn(requestHeaderSpec);
Mockito.when(requestHeaderSpec.retrieve()).thenReturn(mockResponse);
StepVerifier.create(offerDescriptionOrchestratorImpl.orchestrateOfferDescription(xApiContext, "3132", "PD",
"179982937", "true","Y")).verifyError();
}