我有一个小问题要解决。我有以下几行代码可创建2个有效的用户。但是问题是,它从代码的第一行创建了两个具有相同ID的用户:
def myId =调用read('classpath:karate / helpers / guid.js')
def users = function(){karate.call('classpath:v1 / api_CreateUser.feature')}
def usersResult = karate.repeat(2,users)
因此,我希望能够创建具有不同ID的多个用户。我尝试了以下方法:
"""
function(){
var myId = null;
if(myId == null)
{
myId = call read('classpath:karate/helpers/guid.js')
}
karate.call('classpath:v1/api_CreateUser.feature');
}
"""
所以想法是每次都将'myId'变量重置为null,检查null是否为true,然后调用生成ID的js函数并将结果分配给'myId'变量。 然后,将在karate.call('classpath:v1 / api_CreateUser.feature')行上使用该变量。
很遗憾,我收到javascript评估失败错误。
有人可以帮忙吗?
谢谢
答案 0 :(得分:1)
当您在空手道中和在JS中时,要略有不同。例如:
myId = call read('classpath:karate/helpers/guid.js')
这行不通。您正在寻找的是:
myId = karate.call('classpath:karate/helpers/guid.js');
我建议您阅读并理解Karate Expressions上的部分,这将在以后为您省去很多麻烦。
使用JS函数(有效)时,您无需担心自己是什么。只要在任何地方调用它,它就会“分配”一个新值。例如,如果您有:
* def time = function(){ return java.lang.System.currentTimeMillis() + '' }
* def first = time()
* def second = time()
此处first
和second
总是不同的。我想现在您拥有了所需的一切。您正在尝试从函数内部访问在空手道中定义的JS变量,这取决于何时初始化了,如果您不知道自己在做什么,我不建议这样做。但是,如果要访问空手道变量的最新值,正确的方法是使用karate.get(varNameAsString)
。