2016-12-23 6 views
1

Учитывая У меня есть этот JSON массив:Rest-Гарантированный проверки каждого элемента в массиве JSON

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

Я хочу использовать Rest-уверены, чтобы проверить формат поля, используя это дает/когда/то структура.

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

Как получить отдых гарантированного Переберите и применить тест против каждого значения в массиве JSON?

Я не знаю, сколько значений будет в массиве JSON. Это может быть только 1; это может быть 100.

ответ

2

Вы можете использовать JsonPath и сделать что-то вроде следующего:

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

См https://github.com/rest-assured/rest-assured/wiki/usage#json-example для более подробной информации.

Или вы могли бы извлечь ответ как String, превратить его в JSONObject, извлечь JSONArray в values поле, а затем применить регулярное выражение для каждого элемента в массиве:

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]")); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^