[英]Spring WebFlux: Merge Mono and Flux / Put Mono into 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 。
这取决于您究竟要测试什么,对于常规方法,您应该使用StepVerifier来支持消耗测试的输出。 然而,路由器功能是独一无二的,因为通常会返回一个serverResponse ,其中包含您的正文数据,因此在这种情况下,最好使用webClient或webTestClient 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.