spring-boot - @WebFluxTest 切片不启用错误处理
问题描述
我正在使用 @WebFluxTest 和 WebTestClient 测试我的反应式休息 api。
被测控制器的 body 参数中有 @Valid 注解
@PostMapping
public Mono<Route> add(@RequestBody @Valid Route route)
Route 类具有以下验证:
@NotBlank
private String code;
这是发送 code=null 并期望出现错误描述的测试:
@Test
@WithMockUser
void add_shouldReturnError_givenARouteWithInvalidData() {
Route route = new Route(null, "uri", 0, "name", List.of());
client.mutateWith(csrf()).post().uri("/admin/api/routes")
.contentType(MediaType.APPLICATION_JSON)
.body(BodyInserters.fromObject(route))
.exchange()
.expectStatus().isBadRequest()
.expectBody()
.jsonPath("$.errors[0].field").isEqualTo("code")
.jsonPath("$.errors[0].code").isEqualTo("NotBlank");
}
问题
测试失败,因为响应正文为空。在测试实际运行的应用程序时,响应正文包含错误描述(与测试中包含的 json 路径匹配)。
我希望@WebFluxTest 测试片启用了对 Web Flux 的错误处理,就像在 @WebMvcTest 中所做的那样(https://docs.spring.io/spring-boot/docs/2.1.3.RELEASE/reference/html/测试自动配置.html )
这是预期的行为还是缺少的功能?
解决方法
将此添加到我的 @WebFluxTest 类可以纠正行为:
@ImportAutoConfiguration(ErrorWebFluxAutoConfiguration.class)
重要数据
- Spring Boot 2.1.3.RELEASE(还使用 2.1.4.BUILD-SNAPSHOT 和 2.2.0.BUILD-SNAPSHOT 进行了测试)
- JUnit 5.3.2
- 开放JDK 11
解决方案
推荐阅读
- asp.net-core - ITokenAcquisition 令牌刷新和过期功能
- ios - 如何使用 AWS S3 发布 iOS 库?
- r - 如何使用 R、ggplot 和 plotly 在堆积条形图的线性和对数刻度之间切换?
- amazon-web-services - 通过 Cloudformation 声明的 API Gateway Cognito 授权者需要从管理控制台部署才能正常工作
- python - 无法理解如何使用 RabbitMQ
- python - Python中key的字典理解:[1,2,3]
- excel - 当单元格中有数字时,将其计数在与列标题匹配的列中
- python - 将所有 NaN 值替换为其他列中的值
- sas - 如何设置主键 | SAS 工作室
- android - 如何在Android中以编程方式在分屏模式下切换视图?