@WebFluxTest切片未启用错误处理

时间:2019-02-21 15:18:48

标签: spring-boot

我正在使用@WebFluxTest和WebTestClient测试我的反应式休息api。

被测控制器的主体参数中带有@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测试片像@WebMvcTest(https://docs.spring.io/spring-boot/docs/2.1.3.RELEASE/reference/html/test-auto-configuration.html)一样启用Web流量的错误处理

这是预期的行为还是缺少的功能?

解决方法

将此添加到我的@WebFluxTest类中可纠正此行为:

@ImportAutoConfiguration(ErrorWebFluxAutoConfiguration.class)

重要数据

  • Spring Boot 2.1.3.RELEASE(也已通过2.1.4.BUILD-SNAPSHOT和2.2.0.BUILD-SNAPSHOT测试)
  • JUnit 5.3.2
  • OpenJDK 11

0 个答案:

没有答案