【发布时间】:2019-07-27 18:09:02
【问题描述】:
我有一个@Service 类,它执行一些空值检查,然后使用 WebClient 调用外部微服务。 Sonar 抱怨这个类没有经过测试,因为该方法没有经过全面测试。问题是,我怎样才能模拟这个调用或为此使用模拟服务器?我已经尝试过 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);
});
所以我不想真正打这个电话,我只是想在测试中涵盖它,所以我想了解如何模拟或启动模拟服务器。我一直在现在大约一天..
【问题讨论】:
-
你试过类似wiremock.org吗?
-
我希望有一个内置的 spring 解决方案,类似于模拟 RestTemplate 调用的方式
-
您可以添加您尝试使用模拟的代码
标签: spring-boot spring-webflux spring-test spring-webclient