带有正文的 Reactive WebClient GET 请求在 MockWebServer 测试中失败

问题描述 投票:0回答:0

在我的连接器类中,我使用 Spring 将带有主体的 API GET 调用下游到另一个服务,如下所示。

WebClient

我要用下面的测试用例来测试它:

public Mono<SampleResponse> getSampleResponse(final int id, final SampleRequest sampleRequest) { return webclient .method(HttpMethod.GET) .uri("get/sample/{id}", id) .body(Mono.just(sampleRequest), SampleRequest .class) .accept(MediaType.APPLICATION_JSON) .retrieve() .onStatus(HttpStatus.NOT_FOUND::equals, r -> Mono.empty()) .onStatus(HttpStatus::isError, r -> Mono.empty()) .bodyToMono(SampleResponse.class) .doOnError(throwable -> log.error(EXTERNAL_SERVICE_ERROR, throwable.getMessage())); }

我的考试不及格。

private MockWebServer server; private SampleResponseConnector connector; @BeforeEach void setup() { server = new MockWebServer(); ReactiveWebClientConnectorFactory factory = new ReactiveWebClientConnectorFactory(); connector = new SampleResponseConnector (factory.createWebClient( server.url("/").toString(), "", null, null, null)); } @Test public void getSampleResponse_callsDownstreamSuccessfully() { Random random = new Random(); int id = random.nextInt(10); mockResponse("{\"available\":[\"CUSTOMER_ADDRESS\",\"CUSTOMER_QUERY\"]}"); SampleRequest request = SampleRequest .builder().build(); StepVerifier.create(connector.getSampleResponse(id, request)) .expectNextMatches(response -> response.getAvailable().equals(List.of("CUSTOMER_ADDRESS", "CUSTOMER_QUERY"))) .verifyComplete(); } private void mockResponse(String json) { MockResponse response = new MockResponse(); response.setHeader("Content-Type", "application/json"); response.setBody(json); server.enqueue(response); }

任何指针将不胜感激。

java junit spring-webflux okhttp
© www.soinside.com 2019 - 2024. All rights reserved.