小编Goj*_*ojo的帖子

如何在java中对Spring WebClient进行单元测试?

我有这段代码,它使用 WebClient 调用第三方 API。

    public Mono<JsonNode> callApi(String url) {
        return webClient.get()
                .uri(url)
                .headers(httpHeaders -> httpHeaders.set(Constants.X_API_KEY, apiKey))
                .retrieve()
                .onStatus(HttpStatus::is5xxServerError,
                        res -> {
                            res.bodyToMono(String.class)
                                    .subscribe(e -> log.error(Constants.EXCEPTION_LOG, e));
                            return Mono.error(new RetryableException("Server error: " + res.rawStatusCode()));
                        })
                .onStatus(HttpStatus::is4xxClientError,
                        res -> {
                            res.bodyToMono(String.class)
                                    .subscribe(e -> log.error("Exception occurred in callPartnerApi: No retries {}", e));
                            return Mono.error(new Exception("Exception occurred calling partner api, no retries " + res.rawStatusCode()));
                        })
                .bodyToMono(JsonNode.class);
    }
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 Mockito 对此进行单元测试,到目前为止我的测试失败了:

    @Test
    void testCallPartnerApi_then5xxException() {
        WebClient.RequestHeadersUriSpec requestHeadersUriSpec = mock(WebClient.RequestHeadersUriSpec.class);
        WebClient.RequestHeadersSpec requestHeadersSpec = mock(WebClient.RequestHeadersSpec.class);
        WebClient.ResponseSpec …
Run Code Online (Sandbox Code Playgroud)

java junit mockito spring-webflux spring-webclient

3
推荐指数
1
解决办法
4964
查看次数

标签 统计

java ×1

junit ×1

mockito ×1

spring-webclient ×1

spring-webflux ×1