使用Karate API将JSON对象添加至数组遇异常,求排查方案
问题分析与解决:Karate API向数组添加JSON对象失败
问题根源
karate.append()不修改原数组:这个函数是纯函数,调用后会生成包含新元素的新数组,不会直接改动传入的原数组。你的代码只调用了karate.append(),却没把返回的新数组赋值回group['details'],所以原数组一直是空的。- 函数未返回目标对象:
appendBasics函数最后没有返回group,导致bar拿不到处理后的对象,print bar自然输出不符合预期。
修复代码
* def appendBasics = """ function() { var group = {} group['details'] = group['details'] || [] // 把append返回的新数组赋值回原字段 group['details'] = karate.append(group['details'], { b: 2 }) group['details'] = karate.append(group['details'], { b: 4 }) karate.log(group) // 返回处理后的对象 return group } """ * def bar = appendBasics() * print bar
预期输出
{ "details": [ { "b": 2 }, { "b": 4 } ] }
简化写法(可选)
可以一次性传入多个元素,减少调用次数:
group['details'] = karate.append(group['details'], { b: 2 }, { b: 4 })
内容的提问来源于stack exchange,提问作者Shreyansh Jain
相关产品推荐
相关产品推荐

