Есть несколько способов сделать это в каратэ.Ниже следует дать вам несколько советов.Обратите внимание, как существует волшебная переменная _$
при использовании match each
.И поскольку вы можете ссылаться на любой другой JSON в области видимости, у вас есть несколько очень мощных опций.
* def expected = { HKD: 1, INR: 2, USD: 3}
* def response1 = ['USD', 'HKD', 'INR']
* def response2 = [{ currency: 'INR', price: 2 }, { currency: 'USD', price: 3 }, { currency: 'HKD', price: 1 }]
* match response2[*].currency contains only response1
* match each response2 contains { price: '#(expected[_$.currency])' }
Вы, наверное, уже видели, как вы можете call
второй файл объектов в цикле которые могут понадобиться для вашего конкретного случая использования.Еще одна часть головоломки может заключаться в следующем - очень легко преобразовать любой массив JSON в форму, ожидаемую Карате для вызова файла объектов в цикле:
* def response = ['USD', 'HKD', 'INR']
* def data = karate.map(response, function(x){ return { code: x } })
* match data == [{code: 'USD'}, {code: 'HKD'}, {code: 'INR'}]