在单独的功能中声明的函数似乎无法访问

问题描述 投票:0回答:1

在不同的功能文件中设置睡眠功能时,通话和非通话睡眠选项似乎不起作用,从而导致以下错误:

  • 睡觉(25)
01: sleep(25) 
<<<< org.graalvm.polyglot.PolyglotException: TypeError: execute on {value={}} failed due to: Message not supported. - <js>.:program(Unnamed:1)

  • 拨打睡眠25
* call sleep 25 not a callable feature or js function: [type: MAP, value: {}]. 

是否可以在称为功能的单独文件中设置此功能,或者是否需要将其放置在使用它的每个文件中?期望是设置一个js,然后在每个文件中调用(似乎是额外的开销)? 我们还在扩展测试并为随机字符串、随机整数和 uuid 创建函数,但我们希望只执行一次,而不是在需要时在每个文件中执行此操作。我们尝试在配置中设置这些,但是在这里发现,这不受支持。

karate
1个回答
0
投票

您无需将函数放置在每个功能文件中即可全局使用该函数。您可以创建一个包含 sleep 函数的 JS 文件,并在任何功能文件中使用 call read 来调用您的函数。

使用以下代码创建一个名为 sleep.js 的文件

function (params) {
print("Sleeping for ", params.timeInMs, "ms")
java.lang.Thread.sleep(params.timeInMs)
}

然后在您的功能文件中,您可以像这样调用并使用该函数来休眠 25 秒或您需要的任意时间。

* call read('classpath:sleep.js') { timeInMs: 25000 }
© www.soinside.com 2019 - 2024. All rights reserved.