使用MockMvc和jsonPath()测试错误响应

时间:2016-08-03 16:43:05

标签: spring-mvc spring-test

我正在尝试使用以下

测试Spring MVC控制器的错误响应
this.mockMvc
    .perform(get("/healthChecks/9999"))
    .andExpect(status().isNotFound())
    .andExpect(jsonPath('error', is("Not Found")))
    .andExpect(jsonPath('timestamp', is(notNullValue())))
    .andExpect(jsonPath('status', is(404)))
    .andExpect(jsonPath('path', is(notNullValue())))

但测试失败,例外: java.lang.IllegalArgumentException: json can not be null or empty 在第一个jsonPath断言。

当我卷曲此网址时,我会收到以下信息:

{
  "timestamp": 1470242437578,
  "status": 200,
  "error": "OK",
  "exception": "gov.noaa.ncei.gis.web.HealthCheckNotFoundException",
  "message": "could not find HealthCheck 9999.",
  "path": "/healthChecks/9999"
}

有人可以帮我理解我做错了吗?

1 个答案:

答案 0 :(得分:0)

您编写了错误的JsonPath表达式(For More Information LINK),使用$作为根路径。在你的情况下,它应该看起来像:

.andExpect(jsonPath('$.error', is("Not Found")))
.andExpect(jsonPath('$.timestamp', is(notNullValue())))
.andExpect(jsonPath('$.status', is(404)))
.andExpect(jsonPath('$.path', is(notNullValue())))