【问题标题】:How to call a Javascript function with arguments from .js file in karate feature file如何使用空手道特征文件中的 .js 文件中的参数调用 Javascript 函数
【发布时间】:2018-09-27 01:02:24
【问题描述】:

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

function getReviews(reviews){
var length_reviews = reviews.length return length_reviews }

function getReviewsLength(reviewLength){
return reviewLength }

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

* def jsFunction = call read('functions.js') * def review = jsFunction.getReviews(reviewFromFeatureFile) 我收到了

的错误

Cannot read property "length" from undefined

我已经打印了reviewFromFeatureFile 并且它在打印语句中正确出现。

【问题讨论】:

  • 感谢@Peter,但在我的情况下,由于该函数很复杂,所以我将如何从其他功能文件中传递该函数中的参数。

标签: karate


【解决方案1】:

正如彼得上面提到的,你可以让你的 js 内联在你的功能上

* def reviews = [{"r1":2},{"r1":3},{"r1":4}]
* def getReviews = function(reviews){ return reviews.length }
* def getReviewsLength = getReviews(reviews)
* print getReviewsLength

在这个例子中,它应该打印 3。

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

Organizing re-usable functions in karate

【讨论】:

    【解决方案2】:

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

    * 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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 2018-05-07
      相关资源
      最近更新 更多