MockMvc 如何绕过 API 异常?
How can MockMvc get around API exceptions?
理想情况下,我想要这个:
@Test
void testWelcome() throws Exception {
mockMvc.perform(get("/oups"))
.andExpect(status().isInternalServerError());
}
但是测试失败了,因为它在到达断言之前抛出 get("/oops")
(它运行一个抛出 RuntimeException 的控制器方法)。我该如何处理这个问题?这是我现在的快速修复:
@Test
void testTriggerException() throws Exception {
try {
mockMvc.perform(get("/oops"))
.andExpect(status().isInternalServerError());
} catch (Exception e) {
return;
}
fail();
}
你可以试试这个:
Assertions
.assertThatThrownBy(
() -> mockMvc.perform(get("/oops").contentType(MediaType.APPLICATION_JSON)))
.hasCauseInstanceOf(RuntimeException.class)
.hasMessageContaining("The exception message");
理想情况下,我想要这个:
@Test
void testWelcome() throws Exception {
mockMvc.perform(get("/oups"))
.andExpect(status().isInternalServerError());
}
但是测试失败了,因为它在到达断言之前抛出 get("/oops")
(它运行一个抛出 RuntimeException 的控制器方法)。我该如何处理这个问题?这是我现在的快速修复:
@Test
void testTriggerException() throws Exception {
try {
mockMvc.perform(get("/oops"))
.andExpect(status().isInternalServerError());
} catch (Exception e) {
return;
}
fail();
}
你可以试试这个:
Assertions
.assertThatThrownBy(
() -> mockMvc.perform(get("/oops").contentType(MediaType.APPLICATION_JSON)))
.hasCauseInstanceOf(RuntimeException.class)
.hasMessageContaining("The exception message");