2015-06-03 2 views
1

Например, сказать, что я имел следующий JSon ответ:Hamcrest matchers json subarray: есть ли способ использовать hasItems для поиска предметов в подмассиве?

{ 
    "0": { 
       "field1" : 5 
       "field2" : 10 
      } 
    "1": { 
       "field1" : 1 
       "field2" : 10 
      } 
} 

Есть ли какой-нибудь способ, чтобы проверить, что field1 имеет значения 5 и 1? Я застрял в .Body заявлении здесь:

.body("[0].field1", Matchers.hasItems(1)); 

Это вполне возможно, что я не совсем понимаю, что hasItems должен делать, так как я пытался много комбинаций [0], [*], и имена полей, и ни одна из них не работает. Я также хочу, чтобы была статья использования для hamcrest и json, которая не просто охватывала самые основные случаи. Кто-нибудь знает, возможно ли то, что я прошу?

Спасибо за чтение.

ответ

0

Прежде всего, ваш «json document» недействителен. Это, вероятно, следует выглядеть следующим образом:

{ 
    "0": { 
       "field1" : 5, 
       "field2" : 10 
      }, 
    "1": { 
       "field1" : 1, 
       "field2" : 10 
      } 
} 

Поскольку вы ориентируетесь на путь, который соответствует только один элемент, который вы должны использовать equalTo (или is) Hamcrest Искателя:

.body("0.field1", Matchers.equalTo(5)); 

Пожалуйста, обратите внимание, что отдых Застрахованный не использует синтаксис JsonPath «Stefan Goessner». Он использует язык выражения Groovy GPath.