我明白了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/