Comment vérifier JSON dans le corps de la réponse avec mockMvc
C'est ma méthode à l'intérieur de mon contrôleur qui est annoté par @Controller
@RequestMapping(value = "/getServerAlertFilters/{serverName}/", produces = "application/json; charset=utf-8")
@ResponseBody
public JSONObject getServerAlertFilters(@PathVariable String serverName) {
JSONObject json = new JSONObject();
List<FilterVO> filteredAlerts = alertFilterService.getAlertFilters(serverName, "");
JSONArray jsonArray = new JSONArray();
jsonArray.addAll(filteredAlerts);
json.put(SelfServiceConstants.DATA, jsonArray);
return json;
}
Je suis dans l'attente d' {"data":[{"useRegEx":"false","hosts":"v2v2v2"}]}
que mon json.
Et c'est mon test JUnit:
@Test
public final void testAlertFilterView() {
try {
MvcResult result = this.mockMvc.perform(get("/getServerAlertFilters/v2v2v2/").session(session)
.accept("application/json"))
.andDo(print()).andReturn();
String content = result.getResponse().getContentAsString();
LOG.info(content);
} catch (Exception e) {
e.printStackTrace();
}
}
Ici est la sortie de la console:
MockHttpServletResponse:
Status = 406
Error message = null
Headers = {}
Content type = null
Body =
Forwarded URL = null
Redirected URL = null
Cookies = []
Même result.getResponse().getContentAsString()
est une chaîne vide.
Quelqu'un peut s'il vous plaît suggérer comment obtenir mon JSON dans mon test JUnit méthode pour que je puisse compléter mon cas de test.
OriginalL'auteur Zeeshan | 2015-05-27
Vous devez vous connecter pour publier un commentaire.
- Je utiliser TestNG pour mes tests unitaires. Mais au Printemps Framework de Test ils tous les deux se ressemble. Je crois donc que votre test soit comme ci-dessous
Si vous voulez vérifier vérifier json de la Clé et de la valeur que vous pouvez utiliser jsonpath
.andExpect(jsonPath("$.yourKeyValue", is("WhatYouExpect")));
Vous trouverez peut-être que
content().json()
ne sont pas solveble s'il vous plaît ajouterimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
OriginalL'auteur Menuka Ishan
La
406 Not Acceptable
code d'état signifie que le Printemps ne pouvait pas convertir l'objet en json. Vous pouvez soit faire votre contrôleur méthode renvoie une Chaîne de caractères et nereturn json.toString();
ou configurer votre propreHandlerMethodReturnValueHandler
. Cochez cette question similaire De retour JsonObject à l'aide de @ResponseBody dans spring mvcOriginalL'auteur medvedev1088
Vous pouvez essayer de le ci-dessous pour les méthodes get et post
Si la réponse est vide, alors assurez-vous de remplacer
equals()
ethashCode()
méthodes sur laEntity
votre dépôt est de travailler avec:OriginalL'auteur Nagaraj