繁体   English   中英

Spring WebFlux,单元测试 Mono 和 Flux

[英]Spring WebFlux, unit testing Mono and Flux

对反应式编程感兴趣,我玩了一点构建反应式 RESTful Web 服务指南。 并想向前移动并添加一些单元测试。

我试图用普通的 Junit/Mockito 测试来测试我的处理程序( RouterFunction )。 但是,因为它是响应式的,处理程序返回一个Mono<ServerResponse> 所以我不得不block()它来测试ServerResponse状态,但无法提取他的身体来测试它。 在网上搜索解决方案时,似乎所有示例都使用WebTestClient

我的问题是:

鉴于所有示例都使用WebTestClient来测试反应式 REST 服务,并且(单元)测试ServerResponse的主体并不容易。 RouterFunction进行单元测试是一个好习惯还是总是使用WebTestClient进行更广泛的测试WebTestClient

非常感谢。

似乎最佳实践是使用WebTestClient 然而,这个可以在没有运行服务器的情况下使用;

spring-test模块包含一个WebTestClient ,可用于测试 WebFlux 服务器端点,无论是否有正在运行的 server

-- https://docs.spring.io/spring/docs/5.0.0.BUILD-SNAPSHOT/spring-framework-reference/html/web-reactive.html#web-reactive-tests

这取决于您究竟要测试什么,对于常规方法,您应该使用StepVerifier来支持消耗测试的输出。 然而,路由器功能是独一无二的,因为通常会返回一个serverResponse ,其中包含您的正文数据,因此在这种情况下,最好使用webClientwebTestClient

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM