首页 > 解决方案 > @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

解决方案


推荐阅读