正在获取`org.graalvm.PolylobtException:ReferenceError:`-从空手道0.9.5升级到空手道1.1.0.RC3之后 [英] Getting `org.graalvm.polyglot.PolyglotException: ReferenceError:` - after upgrading to karate 1.1.0.RC3 from karate 0.9.5

查看:25
本文介绍了正在获取`org.graalvm.PolylobtException:ReferenceError:`-从空手道0.9.5升级到空手道1.1.0.RC3之后的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

描述:升级到空手道1.1.0.RC3后收到参考错误消息

步骤: 执行测试功能文件

测试功能

  Scenario: Get custom request
    * def testUtils = call read('classpath:features/utils.feature')
    * def getRequest = testUtils.customRequest()
    * print getRequest 

Utils.Feature

Feature: common utilities

  Scenario: 
    * def randomAlphabetic = function (count) { return org.apache.commons.lang3.RandomStringUtils.randomAlphabetic(count) }

    * def customRequest =
    """
     function() {
     var name = randomAlphabetic(2)
     return {
         name:name,
         city:'Bangalore'
     }
  }
    """

错误消息:

org.graalvm.polyglot.PolyglotException: ReferenceError: "randomAlphabetic" is not defined
- <js>.:anonymous(Unnamed:2)

Git Repo供参考-https://github.com/naveenkrao/karate-sample-project

推荐答案

新版本中JS函数的重用有一些限制。有多种变通办法。下面是在JS块本身中移动可重用函数的方法:

* def customRequest =
"""
 function() {
 var randomAlphabetic = function (count) { return java.lang.System.currentTimeMillis() + '' };
 var name = randomAlphabetic(2);
 return {
     name:name,
     city:'Bangalore'
 }
}
"""

或者,如果您使randomAlphabetic函数在全球范围内可用,例如通过karate-config.js,它也可能起作用。

这是我们努力解决的JS引擎更改的结果。如果这对您有问题,我们非常欢迎您贡献代码。我们不这么认为,有很多方法可以创建可重用的函数,遵循一些规则--保持它们简单,对于复杂的逻辑首选Java,不要太多地混合或组合JS或Java。

如果您觉得需要更新文档,也欢迎您提供文档。

这篇关于正在获取`org.graalvm.PolylobtException:ReferenceError:`-从空手道0.9.5升级到空手道1.1.0.RC3之后的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆