Каратэ: можно ли сравнить два ответа службы и исключить некоторые ключи для сравнения - PullRequest
1 голос
/ 27 мая 2020

Я пытаюсь сравнить ответы на два обращения в службу поддержки (для проекта миграции) с помощью Karate. Можно ли исключить или игнорировать некоторые ключи при сравнении всего ответа с одним go для следующих случаев:

1) В ответе есть несколько элементов, где значения разные (отмечены смелый). 2) Есть несколько элементов, которые не присутствуют в одном ответе, но присутствуют в другом (выделены жирным шрифтом).

Ответ службы 1 -

{
  "userKey": "string",
  "enabled": true,
  "locked": true,
  "profile": {},
  "roles": [
    {
      "roleKey": 3,
      "name": "Role",
      **"links": []**
    }
  ],
  "links": [
    {
      "rel": "self",
      **"href": "https://starhub1.com"**
    },
    {
      "rel": "self",
      **"href": "https://singtel1.com"**
    }
  ]
}

Служба 2 ответ -

{
  "userKey": "string",
  "enabled": true,
  "locked": true,
  "profile": {},
  "roles": [
    {
      "roleKey": 3,
      "name": "Role"
    }
  ],
  "links": [
    {
      "rel": "self",
      **"href": "https://starhub22.com"**
    },
    {
      "rel": "self",
      **"href": "https://singtel22.com"**
    }`enter code here`
  ]
}

1 Ответ

0 голосов
/ 27 мая 2020

Да Каратэ в этом неплохо умеет. Просто сделайте преобразование одной полезной нагрузки перед сравнением.

Подробности см. В этом ответе: { ссылка }

Для вашего конкретного примера c, возможно, все, что вам нужно сделать, это изменить одну «сторону» на #string, а затем провести сравнение.

* def response1 = { foo: 'hello' }
* def response2 = { foo: 'world' }
* response2.foo = '#string'
* match response1 == response2
...