Karate - 如何在 javascript 函数参数中使用变量?

标签 karate

我明白了https://karatelabs.github.io/karate/#javascript-functions

* def greeter = function(title, name) { return 'hello ' + title + ' ' + name }
* assert greeter('Mr.', 'Bob') == 'hello Mr. Bob'

但我需要使用一个变量。

* def greeter = function(title, name) { return 'hello ' + title + ' ' + name }
* assert greeter('Mr.', #(myvartitle)) == 'hello Mr. Bob'

我的控制台错误是:

[ERROR] Failures:
[ERROR]   MyWebsiteRunner js failed:
>>>>
01: greeter('Mr.', #(myvartitle)) == 'hello Mr. Bob'
<<<<
org.graalvm.polyglot.PolyglotException: SyntaxError: Unnamed:1:15 Expected an operand but found error
greeter('Mr.', #(myvartitle)) == 'hello Mr. Bob'
               ^

- org.graalvm.polyglot.Context.eval(Context.java:401)
- com.intuit.karate.graal.JsEngine.evalForValue(JsEngine.java:141)
- com.intuit.karate.graal.JsEngine.eval(JsEngine.java:137)
- com.intuit.karate.core.ScenarioEngine.evalJs(ScenarioEngine.java:1252)
- com.intuit.karate.core.ScenarioEngine.assertTrue(ScenarioEngine.java:232)
- com.intuit.karate.ScenarioActions.assertTrue(ScenarioActions.java:242)
- java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

最佳答案

#(foo) 语法仅适用于 JSON:https://github.com/karatelabs/karate#rules-for-embedded-expressions

您需要知道的是 Karate 是 JS 的薄包装。所以变量“正常工作”。

尝试:

* assert greeter('Mr.', myvartitle) == 'hello Mr. Bob'

换句话说,圆括号内的任何内容都被视为 JavaScript。

关于 Karate - 如何在 javascript 函数参数中使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73110542/

相关文章:

javascript - 由 : com. intuit.karate.exception.KarateException: ReferenceError: "XMLHttpRequest"is not defined Karate 配置 js 文件中的异常引起

for-loop - 我可以在 Karate 中使用 for 循环吗?

karate - 检查数组是否仅包含一个包含所提供的键子集的对象

java - 通过不同的场景传递定义的变量是行不通的

java - 占位符替换为内联(场景)变量,而不是全局(背景)变量

java - 如何为 Karate 框架指定 SNI header

dsl - 无法在 Karate 中使用条件逻辑的场景的同一行中使用 "=="和 "contains"

karate - 我想通过 mvn 命令在 karate-config.js 中传递多个参数

java - 如何在 JUnit XML 报告上配置名称和类名属性

azure - 在 Azure Pipelines 上使用 Karate 进行 API 测试