我正在使用@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)