繁体   English   中英

如何使用 jsonPath 从响应正文中获取错误消息

[英]How to get error message from response body using jsonPath

我正在测试我使用 Java 和 Spring 引导创建的 API。 我有一个测试方法,它返回一个 404 未找到(这是有意的),我需要访问返回的错误消息。 这是回应:

{
    "timestamp": "2022-08-30T13:20:22.062+00:00",
    "status": 404,
    "error": "Not Found",
    "message": "Name does not exist",
    "path": "/mutualFundNav/sds"
}

我需要获取“消息”变量并确保显示正确的错误消息。 我尝试了以下代码:

    @Test
    void whenNonExistingNamePassedInThenReturn404() throws Exception {
        mockMvc.perform(get(BASE_URL + END_POINT + "/Non existent name")
                .contentType(MediaType.APPLICATION_JSON))
                .andExpect(status().is4xxClientError())
                .andExpect(jsonPath("$.message", Matchers.is(NAME_NOT_FOUND)));
    }

当我运行这个方法时,我确实得到了一个 404 not found 错误,但我无法检索错误消息。 我收到这样的错误:

java.lang.AssertionError: No value at JSON path "$.message"

尝试这个:

@Test
void whenNonExistingNamePassedInThenReturn404() throws Exception {
    mockMvc.perform(get(BASE_URL + END_POINT + "/Non existent name")
            .contentType(MediaType.APPLICATION_JSON))
            .andExpect(status().is4xxClientError())
            .andExpect(jsonPath("$['message']", Matchers.is(NAME_NOT_FOUND)));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM