Тесты каратэ: как сопоставить содержит ответ каждого вложенного массива только с одной схемой - PullRequest
1 голос
/ 16 апреля 2020

Можно ли сопоставить каждому элементу ответа вложенного массива (с использованием содержит) только одну схему?

У меня есть набор файлов yml с параметрами запроса и схемами ответов, например, такой:

response:
  appId: '#string'
  attributes: '#array'
  login: '#string'
  permissions: '#array'
  metadata:
    roles: '##array'
  userData:
    description: '#string'
    employeeId: '#string'
    employeeNumber: '##string'
    id: '#string'
    login: '#string'
    mail: '#string'
    name: '#string'

и затем в многократно используемой функции:

* def req = read(<testDataFile>)
* match response contains req.response

Я могу сопоставить вложенные объекты только с одной схемой, но я не уверен, возможно ли использовать схему для сопоставления с вложенными массивами

может быть, как:

response:
  appId: '##string'
  attributes: '##array'
  attributes[*]:
    key: '#string'

или любое другое выражение

Большое спасибо

1 Ответ

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

Вы не можете сделать это с одной "схемой", и вы должны объявить повторяющийся элемент отдельно, как переменную каратэ: https://github.com/intuit/karate#schema -validation

* def foo = { a: '#number' }

* def bar = { baz: [{ a: 1 }, { a: 2 }, { a: 3 }] }

* match each bar.baz == foo
* match bar == { baz: '#[] foo' }
...