下面是用于匹配的json样本;匹配包含不起作用。
domain.com/index.php/catalog/test
它抛出错误以下,
* def Parent = [{ a: 1, b: 'x' }, { a: 2, b: 'y' }]
* def Part = [{ a: 1 }, { b: 'y' }]
* match Parent contains '#(^Part)'
# Below throws exception too.
* match Parent contains Part
答案 0 :(得分:1)
这是我认为最好的解决方案。花些时间来理解它;)
* def data = [{ a: 1 }, { b: 'y' }]
* def response = [{ a: 1, b: 'x' }, { a: 2, b: 'y' }]
* def expected = karate.map(data, function(x, i){ return '#(^data[' + i + '])' })
* match response contains only expected
由于我希望该示例可以作为对其他示例的参考,因此,这里有一个替代解决方案,它在0.9.0中还展示了新的dynamic scenario outlines。请注意karate.map()
是执行循环的一种方法,如果您查看文档和示例,还有其他方法。
Background:
* def data = [{ a: 1 }, { b: 'y' }]
* def parts = karate.map(data, function(x){ return { part: x } })
* def response = [{ a: 1, b: 'x' }, { a: 2, b: 'y' }]
Scenario Outline:
* def part = <part>
* match response contains '#(^part)'
Examples:
| parts |