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

Karate 如何在空手道中向数组添加元素?,karate,Karate,如何在空手道中向数组添加元素? 我从response中得到了一个字符串数组(不是json数组),并为下一个请求添加了一个字符串元素。 我尝试了很多JS函数,但是没有成功 感谢您的帮助 Scenario:123 * def roles = ["role1"] * def newrole = "role2" * def addrolefn = """ function(role,roles1) { var fullrole = []; for (var i=0; i<role

如何在空手道中向数组添加元素? 我从response中得到了一个字符串数组(不是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
场景:123
*def角色=[“角色1”]
*def newrole=“role2”
*def addrolefn=
"""
职能(角色,角色1){
var fullrole=[];
关于(var i=0;i请参考关键字

结果:

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)
编辑:键入cast to json,并使用java列表api
add
method

请参考关键字

结果:

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)

编辑:键入cast to json,并使用java list api
add
method

谢谢!但如果我将一个元素附加到一个动态arry,而该动态arry的长度只能在运行时找到,该怎么办?我使用了这个*def arr=[“a”,“b”,“c”]*def length=(arr.length)*打印'length is'+length+'end'*设置arr[length]=“d”*打印arr但获取此错误java.lang.NumberFormatException:对于输入字符串:“length”“对不起,我添加了这个。哦,是的。我做了标记。不管怎样,我都可以为动态数组附加一个元素。但遇到了另一个问题。如果响应中有值,我会给我一个数组;如果没有值,我会给我一个null。我得到的任何响应都需要添加一个元素,并将其作为数组传递给下一个响应。*设置角色[1]=响应[0].assignedRoles*打印角色*设置角色[10]=“花名册编辑器”。但问题有时是响应[0].assignedRoles为null,因此set命令失败,因为它不是数组。这是错误“变量为null或未设置”角色“”。请提供帮助。谢谢!但是如果我将元素附加到动态数组中,而动态数组的长度只能在运行时找到,该怎么办?我使用了此错误*def arr=[“a”、“b”、“c”]*def length=(arr.length)*打印“length is”+长度+“end”*设置arr[length]=“d”*打印arr但获取此错误java.lang.NumberFormatException:对于输入字符串:“length”抱歉。我添加了那个。哦,是的。我标记了它。无论如何,我都可以为动态数组追加一个元素。但遇到了另一个问题。我的响应中如果有值,则为我提供一个数组;如果没有值,则为null。我得到的任何响应都需要添加一个元素,并将其作为数组传递给下一个响应。*设置角色[1]=响应[0].assignedRoles*打印角色*设置角色[10]=“花名册编辑器”。但问题是有时响应[0]。assignedRoles为null,因此set命令失败,因为它不是数组。这是错误“变量为null或未设置”角色“”。请帮助。