Spring boot 如何对发出外部WebClient请求的类进行单元测试?

Spring boot 如何对发出外部WebClient请求的类进行单元测试?,spring-boot,spring-webflux,spring-test,spring-webclient,Spring Boot,Spring Webflux,Spring Test,Spring Webclient,我有一个@Service类,它执行一些空检查,然后使用WebClient调用外部微服务。Sonar抱怨该类未经测试,因为该方法未经充分测试。问题是,我如何模拟这个调用或使用mockserver来模拟这个调用?我尝试过WebTestClient,但似乎无法使事情正常进行 public Mono<CartResponse> someServiceCall(BarRequest barRequest) //some null checks and random logic. retur

我有一个
@Service
类,它执行一些空检查,然后使用WebClient调用外部微服务。Sonar抱怨该类未经测试,因为该方法未经充分测试。问题是,我如何模拟这个调用或使用mockserver来模拟这个调用?我尝试过WebTestClient,但似乎无法使事情正常进行

public Mono<CartResponse> someServiceCall(BarRequest barRequest)

//some null checks and random logic.

return WebClient.create("http://" + fooHostName)
                .post()
                .uri(uri)
                .body(Mono.just(barRequest), BarRequest.class)
                .exchange()
                .flatMap(serviceResponse -> {
                    if (serviceResponse.statusCode().is5xxServerError()) {

                        //some error logic
                        return Mono.just(barResponse);
                    }
                    return serviceResponse.bodyToMono(BarResponse.class);
                });
公共Mono someServiceCall(BarRequest-BarRequest)
//一些空检查和随机逻辑。
返回WebClient.create(“http://”+fooostname)
.post()
.uri(uri)
.body(Mono.just(barRequest),barRequest.class)
.exchange()
.flatMap(服务响应->{
if(serviceResponse.statusCode().is5xxServerError()){
//一些错误逻辑
返回Mono.just(barResponse);
}
返回serviceResponse.BodyToNo(BarResponse.class);
});

所以我不想真的打这个电话,我只想在测试中介绍一下,所以我想了解一下如何让这个模拟或启动模拟服务器。。我已经做了大约一天了。

到目前为止,还不支持模仿
WebClient
比如
restemplate

github上有一个开放的问题


Spring本身用于测试自己的代码,因此可以肯定地说这是一个可行的解决方案。

您是否尝试过类似的解决方案?我希望有一个内置的Spring解决方案,类似于您可以模拟RestTemplate调用的方式。您可以添加使用mock尝试的代码