2013-08-27 5 views
0

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?

+0

Avez-vous besoin du champ 'DT_RowId'? Si non, pourquoi ne pas l'omettre de votre réponse JSON? – CodeChimp

+0

oui, j'ai besoin de DT_RowId champ, sinon la question n'aurait aucun sens – daniele

+0

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

Répondre

0

Vous pouvez utiliser andExpect (content(). Matches (regex ici)), et écrire une regex pour correspondre à votre contenu users.getUsersJson.mywebapp.response.json à l'exclusion de votre DT_RowId.