java - Spring WebFlux,单元测试 Mono 和 Flux
问题描述
对响应式编程感兴趣,我玩了一下构建响应式 RESTful Web 服务指南。并想向前移动并添加一些单元测试。
我试图RouterFunction
用普通的 Junit/Mockito 测试来测试我的处理程序()。但是,因为它是反应式的,所以处理程序返回一个Mono<ServerResponse>
. 所以我只好用block()
它来测试它的ServerResponse
状态,但没能抽出他的身体来测试它。在网上搜索解决方案时,似乎所有示例都使用WebTestClient
.
我的问题是:
鉴于所有样本都WebTestClient
用于测试反应式 REST 服务,并且(单元)测试ServerResponse
. 对 a 进行单元测试是一种好习惯,RouterFunction
还是总是对 a 进行更广泛的测试更好WebTestClient
?
非常感谢。
解决方案
似乎最好的做法是使用WebTestClient
. 然而,这个可以在没有运行服务器的情况下使用;
该
spring-test
模块包括一个WebTestClient
可用于在有或没有正在运行的服务器的情况下测试 WebFlux 服务器端点。
推荐阅读
- mysql - 特定字符串日期的所有列名的总和
- java - “正常级别保护”权限的目的是什么?
- javascript - 逻辑运算符在 javascript 中不起作用,并且关于输入值的节点计数
- ag-grid - Ag-Grid - 搜索具有确定条件的行
- angular - 仅在以角度更改形式后才调用对话
- xamarin - TabbedPage 栏故障
- python - Django 管理员导出问题
- php - POST 请求被重定向到 GET 请求
- mysql - MySql Connect 用 Kemal 迷失在 Crystal 语言中
- python - 从发布者接收数据后,如何在 Tkinter 窗口上触发图像更改?