[英]In Karate, what is the advantage of wrapping a Java function in a JavaScript function?
我可以像這樣包裝 Java function :
* 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
是一個 static 方法,它使用 shell 來執行給定的命令。
至少我對static方法進行了測試,並且在沒有 JavaScript 繞道的情況下工作正常。 似乎 JavaScript 包裝器只會增加額外的復雜性。 除此之外,使用“調用”語法,我只能傳遞一個參數(不可否認,它可以是整個 object 或數組)。 但是,我可以將參數直接傳遞給 Java function (使用正常語法),甚至在匹配中使用結果。 (我假設參數和結果被隱式轉換為 JavaScript 值,這可能是 JSON object 或數組)。
到目前為止,我還沒有看到在 JavaScript 包裝器中顯式包裝 Java 代碼的優勢。 我認為問題出在我身上,那就是:我在這里遺漏了一些重要的點?
唯一的好處是減少打字和當你有很多代碼重用時。 例如,而不是:
* def foo = java.util.UUID.randomUUID() + ''
你定義一次:
* def uuid = function(){ return java.util.UUID.randomUUID() + '' }
然后在任何地方調用它,它非常簡潔:
* def json = { foo: '#(uuid())' }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.