我正在尝试使用@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
无法处理它。
答案 0 :(得分:2)
对于该问题的未来受众,该问题的提出者将该问题提出为an issue against the Spring Boot issue tracker,并通过在WebExceptionHandler
中添加对@WebFluxTest
的支持得以解决,因此代码有问题的应该从the Spring Boot 2.1.0.M3开始起作用,在撰写本文时尚未发布。