空手道-与父母配对Json部分

时间:2018-12-25 16:28:01

标签: karate

下面是用于匹配的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

1 个答案:

答案 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 |