如何使用@WebfluxTest测试异常



我正在尝试使用 @WebfluxTest 测试控制器的异常路径,但它总是抛出服务器异常,然后返回 500 错误。

测试代码在这里:

@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);
}

控制器代码为:

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

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

对于这个问题的未来受众,这个问题是由问题的作者作为针对 Spring Boot 问题跟踪器提出的,并且已通过在 @WebFluxTest 中添加对 WebExceptionHandler 的支持来解决,因此有问题的代码应该从 Spring Boot 2.1.0.M3 开始工作,在撰写本文时尚未发布。

相关内容

  • 没有找到相关文章

最新更新