如何在空手道中向数组添加元素?

How to add an element to an array in karate?

如何在空手道中向数组添加元素? 我有一个来自响应的字符串数组(不是 json 数组),并为下一个请求添加一个字符串元素。 我尝试了很多 JS 函数,但没有成功。

感谢任何帮助。

Scenario:123

* def roles = ["role1"]
* def newrole = "role2"
* def addrolefn =
"""
function(role,roles1) {
    var fullrole = [];
    for (var i=0; i<roles1.length;i++) {

        fullrole = fullrole.push(role);
    }
    return fullrole;
}

"""
* def fullroles = call addrolefn (newrole,roles)
* print fullroles

请参考set关键字。

* def roles = ["role1"]
* def newrole = "role2"
* set roles[1] = newrole
* print karate.pretty(roles)

结果:

06:26:35.324 [main] INFO  com.intuit.karate - [print] [
  "role1",
  "role2"
]

编辑:实际上我刚刚提出了一个增强请求,希望向空手道添加一个 append 关键字。同时,这应该可以回答您的所有问题并作为解决方法。

* def roles = null
# javascript that assigns an empty array if null
* json roles = (roles || [])
* def newrole = "role2"
# javascript to append to an array. the def void is useless
* def void = (roles.add(newrole))
* print karate.pretty(roles)

编辑:类型转换为 json,并使用 java 列表 api add 方法