使用 jsonPath 检查地图 key/values
Check Map key/values with jsonPath
我正在测试 returns 地图
的控制器
@RequestMapping("/")
@ResponseBody
public Map<String, String> getMessages(@RequestBody String foo) {
Map<String, String> map = boo.getMap(foo);
return map;
}
测试:
...
resultActions
.andDo(print())
.andExpect(status().isOk())
.andExpect(
content().contentTypeCompatibleWith(
MediaType.APPLICATION_JSON))
.andExpect(jsonPath("$", notNullValue()))
.andExpect(jsonPath(EXPRESSION, equalsTo(foo));
...
我应该使用哪个表达式从 Map 中读取键和值?
编辑:
解决它的方法可能是:
MvcResult result = resultActions.andReturn();
MockHttpServletResponse response = result.getResponse();
String content = response.getContentAsString();
Gson gson = new Gson();
Type typeOfT = new TypeToken<Map>() {
}.getType();
Map<String, String> map = gson.fromJson(content, typeOfT);
然后遍历地图检查值。但是有没有办法用 jsonPath
来做到这一点?
如果您使用的是 hamcrest Matchers,那将非常简单。有两种方法可以获取地图条目的键或值。
Matchers.hasKey()
Matchers.hasValue()
还有一个简单示例,用于检查生成的 Map 中是否存在所有键。 $.translationProperties
直接指向地图
ResultActions resultActions = mvc.perform(...);
List<String> languagesToBePresent = new ArrayList<>(); //add some values here
for (String language : languagesToBePresent) {
resultActions.andExpect(
jsonPath("$.translationProperties", Matchers.hasKey(language)));
}
我正在测试 returns 地图
的控制器@RequestMapping("/")
@ResponseBody
public Map<String, String> getMessages(@RequestBody String foo) {
Map<String, String> map = boo.getMap(foo);
return map;
}
测试:
...
resultActions
.andDo(print())
.andExpect(status().isOk())
.andExpect(
content().contentTypeCompatibleWith(
MediaType.APPLICATION_JSON))
.andExpect(jsonPath("$", notNullValue()))
.andExpect(jsonPath(EXPRESSION, equalsTo(foo));
...
我应该使用哪个表达式从 Map 中读取键和值?
编辑: 解决它的方法可能是:
MvcResult result = resultActions.andReturn();
MockHttpServletResponse response = result.getResponse();
String content = response.getContentAsString();
Gson gson = new Gson();
Type typeOfT = new TypeToken<Map>() {
}.getType();
Map<String, String> map = gson.fromJson(content, typeOfT);
然后遍历地图检查值。但是有没有办法用 jsonPath
来做到这一点?
如果您使用的是 hamcrest Matchers,那将非常简单。有两种方法可以获取地图条目的键或值。
Matchers.hasKey()
Matchers.hasValue()
还有一个简单示例,用于检查生成的 Map 中是否存在所有键。 $.translationProperties
直接指向地图
ResultActions resultActions = mvc.perform(...);
List<String> languagesToBePresent = new ArrayList<>(); //add some values here
for (String language : languagesToBePresent) {
resultActions.andExpect(
jsonPath("$.translationProperties", Matchers.hasKey(language)));
}