我在Java微服务中使用Springboot2,Spring5和react-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是一个Web客户端实例。我想编写一个JUnit测试来模拟此webclient并测试方法getUserAccessToken()。请帮忙,因为我尝试了很多东西,例如mockmvc,mockRestServiceServer,但没有任何效果。后来我才知道,我不能使用模拟嘲笑服务服务器,因为它曾经模拟过RestTemplate而不是WebClient。我可以使用webtestclient测试控制器类方法,但不能在服务类中测试
答案 0 :(得分:0)
在将来的MockRestServiceServer
版本的Spring Framework中应该支持此功能;参见SPR-15286。
目前,唯一的解决方案是为此使用单独的库,例如okhttp的MockWebServer
。