Tests mit spring-test-mvc jsonpath gibt null zurück
Bin ich mit dem Frühling "Frühling-test-mvc" - Bibliothek zum testen von web-Controller. Ich habe einen sehr einfachen controller, der gibt ein JSON-array. Dann in meinem test habe ich:
@Test
public void shouldGetAllUsersAsJson() throws Exception {
mockMvc.perform(get("/v1/users").accept(MediaType.APPLICATION_JSON))
.andExpect(content().mimeType(MediaType.APPLICATION_JSON))
.andExpect(jsonPath("fName").exists());
}
Den oben genannten test gibt:
java.lang.AssertionError: No value for JSON path: fName
Schnell überprüfen, was ich tatsächlich zu bekommen, lief ich den test unter:
@Test
public void shouldPrintResults() throws Exception {
mockMvc.perform(get("/v1/users").accept(MediaType.APPLICATION_JSON))
.andDo(print());
}
Und es gibt den korrekten JSON-array in den Körper MockHttpServletResponse
Ich bin mir nicht sicher, warum jsonPath
ist nicht in der Lage, um zu sehen fName
im JSON-array.
InformationsquelleAutor jsf | 2012-11-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie fügen Sie die json-Pfad der Abhängigkeit in maven, oder fügen Sie die jar zu Ihrem lib, dann wird es funktionieren. Ich denke, dass der Frühling ist auch nicht das jsonPath Abhängigkeit in der neuesten Frühjahrs-3.2.0 RC1-Version. Ich vermute, dass dies ist das gleiche für Spring-Test-MVC-standalone-Projekt.
Hier ist die Abhängigkeit für Maven:
Möglicherweise müssen Sie auch die hamcrest-Bibliothek zu verwenden, die jsonPath("$.test").Wert("test")
InformationsquelleAutor Brett Robison
Was macht Ihr json-response-Körper Aussehen? Sie können es sehen, indem Sie eine
.andDo(print())
Möchten Sie vielleicht versuchen
jsonPath("$.fName")
.Dies ist unter der Annahme, dass deine json-Antwort ist:
{"fName":"first name"}
Wenn Ihre Antwort ist ein array, dann müssen Sie
jsonPath("$[0].fName")
für eine Antwort wie:[{"fName":"first name"},{"fName":"first name #2"}]
Sehen Sie weitere Beispiele: http://goessner.net/articles/JsonPath/
InformationsquelleAutor Brett Robison