如何使用@WebfluxTest测试异常

时间:2018-01-09 06:48:24

标签: spring spring-boot mockito spring-webflux spring-boot-test

我正在尝试使用@Test @Ignore // ignore it temporarily public void getPostByNonExistedId_shouldReturn404() { given(posts.findById("1")) .willReturn(Mono.empty()); client.get().uri("/posts/1").exchange() .expectStatus().isNotFound(); verify(this.posts, times(1)).findById(anyString()); verifyNoMoreInteractions(this.posts); } 为我的控制器测试异常路径,但它总是抛出服务器异常,然后返回500错误。

测试代码为here

@GetMapping("/{id}")
public Mono<Post> get(@PathVariable("id") String id) {
    return this.posts.findById(id).switchIfEmpty(Mono.error(new PostNotFoundException(id)));
}

控制器代码为:

PostNotFoundException

RestExceptionHandler在后​​台正确捕获,但我的@WebfluxTest测试中的自定义ConstraintLayout无法处理它。

1 个答案:

答案 0 :(得分:2)

对于该问题的未来受众,该问题的提出者将该问题提出为an issue against the Spring Boot issue tracker,并通过在WebExceptionHandler中添加对@WebFluxTest的支持得以解决,因此代码有问题的应该从the Spring Boot 2.1.0.M3开始起作用,在撰写本文时尚未发布。