karate - ## 运算符对 JSON 对象的行为
问题描述
该问题与此处提出的解决方案严格相关我可以对 JSON 对象使用 ## 操作吗?建议使用 ## 运算符来评估 JSON 对象是否为空。建议的解决方案是使用一些条件替换,所以
* def data = { a: 'hello', b: null, c: null }
* def temp = data.c ? { baz: data.c } : null
* def json = { foo: '#(data.a)', bar: '#(data.b)', jsonObject: '##(temp)' }
* match json == { foo: 'hello', bar: null }
如果 data.c 等于 null,则此解决方案可以完美运行,但如果 data.c 设置为某个值,例如
* def data = { a: 'hello', b: null, c: 'world' }
* def temp = data.c ? { baz: data.c } : null
* def json = { foo: '#(data.a)', bar: '#(data.b)', jsonObject: '##(temp)' }
* match json == { foo: 'hello', bar: null, jsonObject:{baz:'world'}}
失败是因为
actual: '##(temp)', expected: {baz=world}.
换句话说,## 运算符似乎无法正确识别 temp 变量中的 json 对象。请注意,如果 temp 变量的计算结果为 null,则该解决方案是否可以正常工作。我做错了什么吗?如果没有,是否有一些解决方法?
解决方案
你可以试试空手道 1.1.0.RC5,因为我认为这个版本已经修复了。
推荐阅读
- sql - 3张桌子加入
- javascript - Google 网站和 Google 应用程序脚本
- java - JPA 和休眠搜索,java.lang.NoSuchMethodError
- slurm - 为什么当我使用 .sh 文件“批量”多个作业时,slurm 分配的任务比我询问的要多?
- reactjs - 设置 react-table page prop 会导致 onFetchData 始终请求同一页面
- php - php查看json数组修改特殊值并返回数组
- html - 不能将 base64 编码的 EOT 字体包含在内联 CSS
- ios - IOS:如何检测用户在后台获取时更改的时区
- spring - Spring Batch:多个文件编写器的页脚回调未给出确切计数
- node.js - jest 是否运行用于测试“toThrowError”的包装函数?