karate - 空手道 - 将 Json 部分与父项匹配
问题描述
以下是用于匹配的 json 样本;匹配包含不起作用。
* 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
它抛出错误,
actual: [{"a":1,"b":"x"},{"a":2,"b":"y"}], expected: '#(^Part)', reason: actual value does not contain expected
解决方案
这是我认为最好的解决方案。花点时间去理解它;)
* 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 中的新动态场景大纲。请注意如何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 |
推荐阅读
- powerbi - 来自 Power BI 高级编辑器的 adls Gen2 的 URL 连接
- python - python socket编程中的帧传输率问题
- css - 代码片段超出边界。如何使其响应移动视图?
- react-native - 如何等待蓝牙配对成功?
- c# - C# 使用 WH_MOUSE
- flutter - vim 与插件 vim-flutter 使用命令 :FlutterRun 和模拟器 Genymotion 产生错误
- angular - PrimeNG confirmPopup 目标问题“预期类型来自属性 'target',它在类型 'Confirmation' 上声明”
- javascript - 如何使用来自 POST 请求的数据通过 script.js 文件操作 DOM
- python - Django将基于函数的视图转换为基于类的视图
- javascript - 实现循环滚动时元素“未定义”