Структура API каратэ - Как я могу проверить, что определенное значение поля не является дубликатом в массиве - PullRequest
1 голос
/ 23 марта 2020

Используя каркас каратэ, как я могу убедиться, что ниже personId под массивом people не должно быть двойное значение

Если вы видите ответ ниже, запись id: 1 имеет дубликаты personIds, поэтому мой тест должен потерпеть неудачу в этом случае. Также массив лиц имеет динамический характер c, могут быть некоторые записи, которые также содержат более 4 персон.

Так что общий подход должен быть полезным. Пожалуйста помоги.

    {
        "total": 10,
        "count": 10,
        "results": [
            {
                "id": "1",
                "source": {
                    "authors": {
                        "persons": [
                            {
                                "personId": 11
                            },
                            {
                                "personId": 11
                            }
                        ]
                    }
              }
          },
          {
                "id": "2",
                "source": {
                    "authors": {
                        "persons": [
                            {
                                "personId": 11
                            },
                            {
                                "personId": 15
                            }
                        ]
                    }
              }
          }
    ]
}

1 Ответ

1 голос
/ 23 марта 2020

Здесь вы go, одно возможное решение с использованием функции JS и использованием Java Set:

* def isValid =
"""
function(x) {
  var personIds = karate.jsonPath(x, '$[*].personId');
  var distinct = new java.util.HashSet(personIds);
  return personIds.size() == distinct.size();
}
"""
* match each $..persons == '#? isValid(_)'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...