我可以这样 Package java函数:
* def myJavaMethod =
"""
function() {
var Utils = Java.type('Utils');
// use Number type in constructor
var obj = new Utils(...);
return obj.myJavaMethod();
}
"""
但我为什么要这么做?我可以在测试场景中直接使用java函数,如下所示:
Scenario: Test exec and error value
* def Utils = Java.type('Utils');
* def ret = Utils.exec('echo "From Java" > /home/richard//karate-test/karate-0.9.6/out.txt');
* match read('out.txt') == "From Java\n";
* match Utils.exec('exit 123') == 123
注: exec
是一个静态方法,它使用shell执行给定的命令。
至少我对静态方法进行了测试,没有javascript绕道,效果很好。javascript Package 器似乎只增加了一层额外的复杂性。除此之外,使用“call”语法,我只能传递一个参数(当然可以是整个对象或数组)。但是,我可以直接将参数传递给java函数(使用普通语法),甚至可以在匹配中使用结果(我假设参数和结果被隐式转换为javascript值(可以是json对象或数组)。
到目前为止,我还没有看到在javascript Package 器中显式 Package java代码的优势。我想问题出在我身上,那就是:我遗漏了一些重要的一点?
1条答案
按热度按时间zz2j4svz1#
唯一的优点是减少了输入,并且当您有大量代码可重用时。例如,而不是:
您只需定义一次:
然后在任何地方称呼它,它非常简洁: