Les tests avec le printemps-test-mvc jsonpath retourne null
Je suis à l'aide du Printemps "spring-test-mvc" bibliothèque de test web contrôleurs. J'ai une question très simple contrôleur qui retourne un tableau JSON. Ensuite dans mon test j'ai:
@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());
}
Le test ci-dessus retourne:
java.lang.AssertionError: No value for JSON path: fName
De vérifier rapidement ce que j'ai vraiment j'ai couru le test ci-dessous:
@Test
public void shouldPrintResults() throws Exception {
mockMvc.perform(get("/v1/users").accept(MediaType.APPLICATION_JSON))
.andDo(print());
}
Et il renvoie le bon tableau JSON dans le corps de MockHttpServletResponse
Je ne suis pas sûr pourquoi jsonPath
n'est pas en mesure de voir fName
dans le tableau JSON.
OriginalL'auteur jsf | 2012-11-13
Vous devez vous connecter pour publier un commentaire.
Si vous ajoutez le json chemin de la dépendance maven, ou ajouter le pot de votre lib, puis il va travailler. Je pense que le Printemps n'est pas y compris le jsonPath dépendance dans le dernier Printemps 3.2.0 RC1. Je suppose que c'est la même chose pour le Printemps-Test-MVC projet autonome.
Ici est la dépendance Maven:
Vous pourriez aussi avoir besoin le hamcrest bibliothèque à utiliser le jsonPath("$.test").valeur("test")
OriginalL'auteur Brett Robison
Quoi votre réponse json corps? Vous pouvez le voir en faisant un
.andDo(print())
Vous pourriez vouloir essayer
jsonPath("$.fName")
.Cela suppose que votre réponse json est:
{"fName":"first name"}
Si votre réponse est un tableau, alors vous devez
jsonPath("$[0].fName")
pour une réponse comme:[{"fName":"first name"},{"fName":"first name #2"}]
Vous pouvez voir plus d'exemples: http://goessner.net/articles/JsonPath/
OriginalL'auteur Brett Robison