我使用空手道框架调用池化JS函数,如下所示。即使实际状态已完成,它也会重复执行该方案。我想知道如何停止循环,并且在实际状态完成后无需再次调用该场景
"""
function(status) {
var actualstatus = null
while (actualstatus != 'Complete') {
var packageId = {"packageid": packageid};
var result = karate.call('extractProgress.feature',packageId);
var greeting = result.response;
if(greeting.payload.progressStatus == status)
{ actualstatus = greeting.payload.progressStatus
return;}
actualstatus = greeting.payload.progressStatus
java.lang.Thread.sleep(100);
}
}
"""
场景:一个
* def packageId = packageid
* def result = call read('Progress.feature') {packageid: '#(packageId)'}
* def current = result.response
* def status = 'Complete'
* call waitUntil status
答案 0 :(得分:1)
不确定您的JS,请在可能的情况下寻求附近人的帮助。
这是我的尝试,因为我无法完全复制您的环境。把事情简单化。另外,如果持续时间太长等,您还可以添加逻辑以退出循环。
"""
function(status, id) {
while (true) {
var jsonArg = { packageid: id };
var result = karate.call('extractProgress.feature', jsonArg);
var response = result.response;
if (response.myPath == status) {
return;
}
java.lang.Thread.sleep(100);
}
}
"""