Spring webclient 模拟webclient中的问题

Spring webclient 模拟webclient中的问题,spring-webclient,Spring Webclient,我试图用mockito模拟这个端点,但我得到了内部服务器错误。早些时候,我们使用的交换方法导致内存泄漏问题,然后将其更改为检索,但测试用例失败。我尝试了所有方法,但无法解决。我不确定我在哪里出错。需要你们帮忙 public static Mono<? extends ExternalApiResponse> invokeWebClientEndpoint( WebClient webClient, ExternalApiRequest

我试图用mockito模拟这个端点,但我得到了内部服务器错误。早些时候,我们使用的交换方法导致内存泄漏问题,然后将其更改为检索,但测试用例失败。我尝试了所有方法,但无法解决。我不确定我在哪里出错。需要你们帮忙

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();

}