如何在karate功能文件中使用.js文件中的参数调用Javascript函数

如何在karate功能文件中使用.js文件中的参数调用Javascript函数,karate,Karate,假设我在函数js文件中创建了javascript函数 函数getReviews(reviews){ var length_reviews=reviews.length 返回长度 } 函数getReviewLength(reviewLength){ 返回审核长度 } 函数getReviews参数reviews中有一个数组。 现在,我将如何在一个功能文件中调用getReviews函数。 当我尝试下面的代码时 *def jsFunction=call read('functions.js')) *de

假设我在函数js文件中创建了javascript函数

函数getReviews(reviews){
var length_reviews=reviews.length 返回长度 }

函数getReviewLength(reviewLength){
返回审核长度 }

函数
getReviews
参数
reviews
中有一个数组。 现在,我将如何在一个功能文件中调用
getReviews
函数。 当我尝试下面的代码时

*def jsFunction=call read('functions.js'))
*def review=jsFunction.getReviews(reviewFromFeatureFile)
我犯了一个错误

无法从未定义中读取属性“length”

我已经从功能文件中打印了
reviewFromFeatureFile
,并且在打印语句中正确地显示了它。

在一个“通用”功能文件中,定义以下多种方法:

* def uuid = function(){ return java.util.UUID.randomUUID() + '' }
* def now = function(){ return java.lang.System.currentTimeMillis() }
* call read('common.feature')
您现在可以这样调用此功能:

* def uuid = function(){ return java.util.UUID.randomUUID() + '' }
* def now = function(){ return java.lang.System.currentTimeMillis() }
* call read('common.feature')
现在,该功能中的所有功能都可以使用:

* def id = uuid()
* def time = now()

正如Peter在上面提到的,您可以在功能上保持js内联

* def reviews = [{"r1":2},{"r1":3},{"r1":4}]
* def getReviews = function(reviews){ return reviews.length }
* def getReviewsLength = getReviews(reviews)
* print getReviewsLength
在本例中,它应该打印3

有关在空手道中处理javascript或其他可重用模块的更多其他选项,请参阅本文


谢谢@Peter,但在我的例子中,由于函数很复杂,因此我将如何从其他功能文件中传递该函数中的参数。