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");