Karate 如何使用空手道将的后台响应值传递给函数值中的另一个json特性

Karate 如何使用空手道将的后台响应值传递给函数值中的另一个json特性,karate,Karate,我在后台得到了对其中一个请求的响应,并将其传递给函数进行轮询,需要运行,直到满足特定条件。在该函数中,我需要将值传递给调用的featurejson文件 while (true) { var result = karate.call('extractProgress.feature') packageid; -- package id 是另一个请求的响应 我遵循了前面提到的类似方法,但没有传递任何参数。 但是我得到了下面的错误 功能(com.intuit.karate.testng.

我在后台得到了对其中一个请求的响应,并将其传递给函数进行轮询,需要运行,直到满足特定条件。在该函数中,我需要将值传递给调用的featurejson文件

  while (true) {
  var result = karate.call('extractProgress.feature') packageid; -- package id 
是另一个请求的响应

我遵循了前面提到的类似方法,但没有传递任何参数。

但是我得到了下面的错误

功能(com.intuit.karate.testng.KarateTestngTest): java.lang.RuntimeException:javascript计算失败:packageid, ReferenceError:“packageid”未在第1行中定义


我听上去不对,也许你有打字错误

另外,请仔细阅读文件。仅支持JSON作为
调用
参数

你获得支持的最好方法就是遵循这个过程,否则没有人能用你在问题中提供的有限信息来帮助你


js内部调用的输入应如下所示

karate.call("<featureFile>",yourInputVaraible);
karate.call(“,yourputvaraible);
请参阅本文件

@Peter Thomas我不知道这个请求是否会在你的桶下。所以添加你here@PeterThomas完成。我不熟悉堆栈溢出。是否尝试将变量packageid作为输入传递到功能文件@用户:1980552当然可以。我试图添加示例代码,但它抛出了错误,这就是我在给定url“url1”中提出问题的原因,并在方法POST然后状态200和def packageid=response.payload.packageid*def WAITTIL=“”函数(状态){while(true){var result=karate.call('extractProgress.feature')时请求一些JSON{packageid:'#(packageid)};var greeting=result.response;if(greeting.payload.progressStatus==status){return;}java.lang.Thread.sleep(100);}}}如上所述,将变量传递给函数是正确的?是否尝试将变量packageid作为输入传递给功能文件?回答:@user1980552知道如何使用它吗?传递参数的正确方式?var result=karate.call('extractProgress.feature','#(packageid)'));我尝试使用“仍然得到相同的错误var packageId={“packageId”:packageId};var result=karate.call('extractProgress.feature',packageId);”#(packageId)“这种从变量分配json值的方法只适用于功能文件。@这里我遵循了下面url中提到的类似逻辑,但循环永远不会结束,一旦条件满足,它应该停止,但它会再次调用相同的场景。对此有什么想法吗?上面的代码说明了它的while(true),这将始终是一个无限循环,除非在循环中有一个有效的中断/返回条件,否则代码也有一个中断while循环的if条件(if(greeting.id==x)。请确保有一个有效的条件(请参阅此中的答案2:'))