Je suis en train de tester une application MVC à ressort.
Je dois être sûr que la réponse au navigateur a un certain modèle, mon application renvoie un certain json, et pour chaque élément Json il y a un champ appelé DT_RowId que je ne veux pas comparer, parce que DT_RowId contient un nombre aléatoire. Par conséquent, je voudrais comparer tout le corps de JSON, à l'exception de DT_RowId et de son contenu. Par ailleurs, une occurence typique de DT_RowId est "DT_RowId": "8407709537703772". Et une réponse JSON typique est:Modèle de réponse Test Spring MVC (Ignorer un champ json dans les éléments de la réponse)
{"id":-1,"fieldErrors":[],"aaData":[{"id":8002,"firstname":"Bob","lastname":"Jones","email":"[email protected]","DT_RowId":"8407709537703772"},{"id":8002,"firstname:"Dan","lastname":"Jones","email":"[email protected]","DT_RowId":"8404309537701754"}]}
Ci-dessous, mon test:
@Test
public void testGetUsersJson() throws Exception {
mockMvc.perform(get("/users")
.accept(MediaType.APPLICATION_JSON))
.andDo(print())
.andExpect(content().contentType("application/json"))
// How can I modify the line below??
.andExpect(content().bytes(IOUtils.toByteArray(ctx.getResource("classpath:responses/users.getUsersJson.mywebapp.response.json").getInputStream())))
.andExpect(status().isOk())
.andExpect(redirectedUrl(null))
.andExpect(forwardedUrl(null));
}
Comment puis-je modifier le code ci-dessus? Je voudrais comparer toute la réponse de Json excepté le champ "DT_RowId". Des idées intelligentes?
Avez-vous besoin du champ 'DT_RowId'? Si non, pourquoi ne pas l'omettre de votre réponse JSON? – CodeChimp
oui, j'ai besoin de DT_RowId champ, sinon la question n'aurait aucun sens – daniele
C'était juste une question. Si vous n'utilisez pas le DT_RowId dans le client, l'omettre rendrait la comparaison plus facile. Parfois, les gens ne voient pas l'évidence parce qu'ils regardent au mauvais endroit. – CodeChimp