каратэ: поиск индекса значения конкретного элемента из ответа API - PullRequest
1 голос
/ 17 мая 2019

мой код для поиска индекса, как показано ниже

* def list = nestActual #this is API response value which is given at the end
* def searchFor = { category_name: 'books3'}
* def foundAt = []
* def fun = function(x, i){ if (karate.match(x, searchFor).pass) foundAt.add(i) }
* eval karate.forEach(list, fun)
* print "==========foundAt=======" +foundAt

я пробовал приведенный выше код для поиска индекса, где я получаю индекс FoundAt как ноль.

Ниже приведен мой ответ, в котором я хочунайти индекс "category_name": "books3"

[
{
"category_id":1, "parent_cat_id":0, "category_name":"books", "slug_name":"books_1", "popular":true,

}, {
"category_id":2, "parent_cat_id":1, "category_name":"books2", "slug_name":"books_2", "popular":false,

}, {
"category_id":3, "parent_cat_id":1, "category_name":"books3", "slug_name":"books3_2", "popular":false,

}, {
"category_id":4, "parent_cat_id":3, "category_name":"mp3", "slug_name":"mp_3", "popular":false, }, {
"category_id":5, "parent_cat_id":3, "category_name":"mp4", "slug_name":"humoristiska_deckare_mysi_deck_3", "popular":false, }, {
"category_id":6, "parent_cat_id":3, "category_name":"video", "slug_name":"video3", "popular":false,

} ]

Пожалуйста, дайте мне знать, как найти индекс "category_name": "books3", используя каратэ

1 Ответ

1 голос
/ 17 мая 2019

Угадайте, что существует гораздо более простой способ - преобразовать цель поиска в массив примитивов. Затем вы можете использовать List.indexOf() метод Java:

Scenario: using the java indexOf api (will change with graal)
    * def response = [{ name: 'a' }, { name: 'b' }, { name: 'c' }]
    * def names = $[*].name
    * def index = names.indexOf('b')
    * match index == 1
...