Извлечение и сравнение данных из массива json, не работающего в карате - PullRequest
1 голос
/ 23 апреля 2020

Я пытаюсь найти определенное значение в массиве JSON, используя значение, хранящееся в переменной, и затем сравнивая каким-то образом, это не работает для меня. Не могли бы вы помочь. BillerId1 всегда возвращает пустое значение

Given url buyerApi
Given url paymentHub
Then path '/BPAY/v' + version + '/billers'
And header Authorization = 'Bearer ' + token
When method get
Then  status 200
* def id = response[0].savedBillerId
Then url paymentHub
Then path '/BPAY/v' + version + '/billers/' +id
And header Authorization = 'Bearer ' + token
And request {billerCode:<billerCode>, billerCRN:'<billerCRN>'}
When method put
Then status 200
Then url paymentHub
Then path '/BPAY/v' + version + '/billers'
And header Authorization = 'Bearer ' + token
When method get
Then  status 200
* print id
* def billId1 = get[0] response[?(@.savedBillerId==**'#id'**)].savedBillerId
* print billId1
And match billId1 == id
Examples:
         | billerCode | billerCRN    |
         | 65284      | 65112345675  |

Массив выглядит следующим образом

 [
 {
"savedBillerId": "ebfa2b9f-f49c-4b0c-c6ee-08d7e671944a",
"billerId": "26c67edb-b3dc-44ea-aa74-08d7d6890798",
"billerName": "test case 21c",
"billerCode": 65284,
"crn": "65112345675"
},
{
"savedBillerId": "500dfde7-e31c-408d-c6ef-08d7e671944a",
"billerId": "26c67edb-b3dc-44ea-aa74-08d7d6890798",
"billerName": "test case 21c",
"billerCode": 65284,
"crn": "65112345672"
}

]

@ ptrthomas

1 Ответ

0 голосов
/ 23 апреля 2020

Пожалуйста, прочитайте документы: https://github.com/intuit/karate#jsonpath -фильтры

* def id = '500dfde7-e31c-408d-c6ef-08d7e671944a'
* def billId1 = karate.jsonPath(response, "$[?(@.savedBillerId=='" + id + "')].savedBillerId")[0]
* match billId1 == id

Также я считаю, что это бесполезная проверка. Вы находите по идентификатору и снова проверяете его?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...