Каратэ: проверить текст, содержащийся в списке котят в кошке, вернуть все значения ключей не совпадали с ошибкой - PullRequest
1 голос
/ 20 февраля 2020

У меня есть следующий код

* def cat =
  """
  {
    kittens: [
      {
        id: 23,
        name: 'Bob'
      },
      {
        id: 42,
        name: 'Wild'
      }
    ]
  }
  """
* def id = {id: 23}

Я пытаюсь следовать Каратэ содержит, и все значения ключей не совпадают с ошибкой , чтобы разрешить все значения ключей не совпадают с ошибкой здесь это то, что у меня есть

* match cat == {kittens: '#(^id)'}
* match cat contains {kittens: '#(^id)'}

, но я получаю следующую ошибку

com.intuit.karate.exception.KarateException: - путь: $, фактический: {kittens = [{ "id": 23, "name": "Bob"}, {"id": 42, "name": "Wild"}]}, ожидается: {kittens = # (^ id)}, причина: все значения не совпадают

Теперь я добавил еще одно поле цвета для каждого котенка:

* def cat =
  """
  {
    kittens: [
      {
        id: 23,
        colour: 'black',
        name: 'Bob'
      },
      {
        id: 42,
        colour: 'grey',
        name: 'Wild'
      }
    ]
  }
  """
* def id = {id: 23, name: 'Bob'}

, используя предоставленный ответ cat.kittens contains '#(^id)' ЕЩЕ работает.

Альтернатива способ сделать это -

* def id = {id: 23, colour: '#number', name: 'Bob'}

Option1 лучше, так как вам не нужно указывать цвет: '#number'.

1 Ответ

1 голос
/ 20 февраля 2020

Здесь вы go:

* match cat.kittens contains '#(^id)'

Для объяснения читайте: https://github.com/intuit/karate#contains -короткие сокращения

...