2016-12-23 1 views
1

Étant donné que j'ai ce tableau JSON:validate Rest-Assured chaque élément dans un tableau JSON

{ 
    value: ["000", "111", "345", "987"] 
} 

Je veux utiliser le repos-assuré pour valider le format des champs à l'aide il est donné/quand/restructurez. Comment est-ce que j'obtiens l'assurance de faire une boucle et d'appliquer le test à chaque valeur de la matrice JSON?

Je ne sais pas combien de valeurs seront dans le tableau JSON. Ce pourrait être seulement 1; il pourrait être 100.

Répondre

2

Vous pouvez utiliser JsonPath et faire quelque chose comme ce qui suit:

given(). 
    queryParam("myparam", myparamvalue). 
when(). 
    get(callRoot). 
then(). 
    body("value.*", matchesPattern("[0-9][0-9][0-9]"); 

Voir https://github.com/rest-assured/rest-assured/wiki/usage#json-example pour plus de détails.

Ou vous pouvez extraire la réponse en String, le transformer en un JSONObject, extraire le JSONArray dans le domaine values, et ensuite appliquer la regex à chaque élément du tableau:

Response response = given().queryParam("myparam", myparamvalue).when().get(callRoot). 

JSONObject responseJson = new JSONObject(response.getBody().asString()); 
JSONArray values = responseJson.getJSONArray("values"); 

for(int i = 0; i < values.length(); i++) { 
    String value = values.getString(i); 
    Assert.assertThat(values, matchesPattern("[0-9][0-9][0-9]")); 
}