【发布时间】:2018-12-27 04:24:47
【问题描述】:
我在我的 Java 微服务中使用 Springboot2、Spring5 和 reactive-webflux。 我有一个要使用 webtestclient 测试的服务类:-
@Service("authenticationProvider")
public class CommonAuthenticationProvider implements AuthenticationProvider {
@Override
public AccessToken getUserAccessToken(Tuple2<String, WebClient> serviceConnectionDetails, MultiValueMap<String, String> queryParams) {
return serviceConnectionDetails._2
.post()
.uri(builder -> builder
.path(serviceConnectionDetails._1)
.queryParams(queryParams)
.build())
.accept(MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML)
.retrieve()
.bodyToMono(AccessToken.class)
.block();
}
}
这里的 serviceConnectionDetails._2 是一个 webclient 实例。我想编写一个 JUnit 测试来模拟这个 webclient 并测试 getUserAccessToken() 方法。请帮忙,因为我尝试了很多东西,比如 mockmvc、mockRestServiceServer 但没有任何效果。后来我才知道,我不能使用 mockRestServiceServer,因为它曾经模拟 RestTemplate 而不是 WebClient。我可以使用 webtestclient 测试控制器类方法,但不能在服务类中测试
【问题讨论】:
标签: junit webclient spring-webflux