如何使用@WebfluxTest测试异常

问题描述 投票:1回答:1

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

测试代码是here

@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正确地在后台捕获,但在我的RestExceptionHandler测试中,它不是由我的自定义@WebfluxTest处理的。

spring spring-boot mockito spring-webflux spring-boot-test
1个回答
2
投票

对于这个问题的未来受众,这个问题由问题的作者提出为an issue against the Spring Boot issue tracker,并且已经通过在WebExceptionHandler中添加对@WebFluxTest的支持而得到解决,因此有问题的代码应该正常工作,因为当时尚未发布的the Spring Boot 2.1.0.M3写作

© www.soinside.com 2019 - 2024. All rights reserved.