2015-04-12 3 views
2

Нужна помощь для проверки конкретного параметра JSON из-под ответа, используя REST Assured library.Как проверить вложенный ответ с помощью REST Assured?

Я пробовал некоторые из вариантов проверки другого аналогичного параметра, как показано ниже, но это не сработало.

.then().body("value.value.value.name", hasItems("balanceResultCode")).body("value.value.value.value", hasItems("0")); 

Если я хочу, чтобы проверить «ResultCode» & «subscriberIdType» снизу ответ, то как я могу это сделать?

[ 
{ 
    "name":"Id", 
    "value":"11" 
}, 
{ 
    "name":"version", 
    "value":null 
}, 
{ 
    "name":"header", 
    "value":[ 
     { 
      "name":"mVersion", 
      "value":"1" 
     }, 
     { 
      "name":"Name", 
      "value":"BalQ" 
     }, 
     { 
      "name":"appID", 
      "value":"90091" 
     }, 
     { 
      "name":"requestUid", 
      "value":"REST_REQUQEST_1" 
     }, 
     { 
      "name":"sessionId", 
      "value":"REST_SESSION_1" 
     }, 
     { 
      "name":"requestType", 
      "value":"SomeRequestType" 
     }, 
     { 
      "name":"requestNumber", 
      "value":"REQ_111" 
     }, 
     { 
      "name":"requestDuplicate", 
      "value":"1" 
     }, 
     { 
      "name":"serviceProvider", 
      "value":1 
     }, 
     { 
      "name":"username", 
      "value":"user" 
     }, 
     { 
      "name":"password", 
      "value":"pass" 
     }, 
     { 
      "name":"resultCode", 
      "value":100 
     } 
    ] 
}, 
{ 
    "name":"content", 
    "value":[ 
     { 
      "name":"subscriberAddressing", 
      "value":[ 
       { 
        "name":"subscriber", 
        "value":[ 
         { 
          "name":"subscriberIdType", 
          "value":200 
         }, 
         { 
          "name":"subscriberIdValue", 
          "value":"1234567890" 
         } 
        ] 
       } 
      ] 
     } 
    ] 
} 

]

ответ

3

Это один из способов:

then(). 
     body("find { it.name == 'header' }.value.find { it.name == 'resultCode' }.value", is(100)). 
     body("find { it.name == 'content' }.value.find { it.name == 'subscriberAddressing' }.value.find { it.name == 'subscriber' }.value.find { it.name == 'subscriberIdType'}.value", is(200)); 

Вы можете прочитать на Groovy коллекции и GPATH, чтобы узнать больше.

+0

Благодарим вас за быстрый ответ! Это действительно сработало. У меня только один раз беспокойство, будет ли какое-либо влияние на производительность, если у меня будет очень большой ответ со многими такими универсальными параметрами, поскольку мы используем «НАЙТИ» на каждом уровне узла? – OverrockSTAR

+0

Кроме того, если у вас есть какие-либо документы или полезные ссылки, связанные с коллекциями Groovy и GPath, пожалуйста, поделитесь ими. thx – OverrockSTAR

+0

Просьба также поделиться, если есть какой-либо другой способ, как я вижу, вы упомянули выше, что это один из способов ... Я был бы рад узнать все другие способы, а также свои знания. Спасибо! :) – OverrockSTAR