Überprüfen Karte Schlüssel/Werte-mit jsonPath
Teste ich einen regler gibt eine Karte
@RequestMapping("/")
@ResponseBody
public Map<String, String> getMessages(@RequestBody String foo) {
Map<String, String> map = boo.getMap(foo);
return map;
}
Test:
...
resultActions
.andDo(print())
.andExpect(status().isOk())
.andExpect(
content().contentTypeCompatibleWith(
MediaType.APPLICATION_JSON))
.andExpect(jsonPath("$", notNullValue()))
.andExpect(jsonPath(EXPRESSION, equalsTo(foo));
...
Welchen Ausdruck soll ich verwenden, um Lesen Sie die Schlüssel und den Wert von der Karte?
Bearbeiten:
Ein Weg, um es zu lösen sein könnte:
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);
Und dann in einer Schleife durch die anzeigen der überprüfung der Werte. Aber gibt es einen Weg, es zu tun mit jsonPath
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie mit hamcrest Matcher, das ist ziemlich leicht. Es gibt zwei Methoden, um Ihre Hände auf entweder der Schlüssel oder der Wert des map-Eintrag.
Matcher.hasKey()
Matcher.hasValue()
Und ein einfaches Beispiel, um zu überprüfen, ob alle Schlüssel vorhanden sind in der resultierenden Karte.
$.translationProperties
Punkte direkt auf der Karte.Matchers.hasEntry(K key, V value)
ist ebenso nützlich.