Karate 在js函数中使用调用读取

Karate 在js函数中使用调用读取,karate,Karate,我有个小问题要解决。我有以下几行代码,它们创建了2个用户,可以正常工作。但问题是,它从第一行代码中创建具有相同Id的两个用户: def myId=call read('classpath:karate/helpers/guid.js') def users=function(){karate.call('classpath:v1/api_CreateUser.feature')} def usersResult=空手道。重复(2,用户) 因此,我希望能够创建具有不同ID的多个用户。我尝试了以

我有个小问题要解决。我有以下几行代码,它们创建了2个用户,可以正常工作。但问题是,它从第一行代码中创建具有相同Id的两个用户:

  • def myId=call read('classpath:karate/helpers/guid.js')

  • def users=function(){karate.call('classpath:v1/api_CreateUser.feature')}

  • def usersResult=空手道。重复(2,用户)

因此,我希望能够创建具有不同ID的多个用户。我尝试了以下方法:

*def用户=
  • def usersResult=空手道。重复(2,用户)
因此,我们的想法是每次将“myId”变量重置为null,检查null是否为true,然后调用生成id的js函数并将结果分配给“myId”变量。 然后该变量将用于karate.call('classpath:v1/api_CreateUser.feature')行

不幸的是,我得到了javascript评估失败的错误

有人能帮忙吗


谢谢

清楚空手道和JS的细微差别。例如:

myId = call read('classpath:karate/helpers/guid.js')
这行不通。您需要的是:

myId = karate.call('classpath:karate/helpers/guid.js');
我建议你阅读并理解这一部分,这将为你以后省去很多麻烦

当你使用一个JS函数(可以工作)时,你不需要担心你是什么。只要在任何地方调用它,它就会“分配”一个新值。例如,如果您有:

* def time = function(){ return java.lang.System.currentTimeMillis() + '' }
* def first = time()
* def second = time()

这里第一个和第二个总是不同的。我想现在你已经拥有了你所需要的一切。您试图从函数中访问在Karate中定义的JS变量,这取决于其中一个变量是何时初始化的,如果您不知道自己在做什么,我不建议您这样做。但是,如果您想访问空手道变量的最新值,正确的方法是使用。

我想通过投票将其设置为已接受,我的错。答案已被接受。谢谢你的评论。我将阅读和理解更多的空手道表达。
* def time = function(){ return java.lang.System.currentTimeMillis() + '' }
* def first = time()
* def second = time()