我创建了一个包含大量javascript函数的功能文件。
在一个不同的功能文件中,我想使用其中一个功能(并传入一个值)。
我该怎么做?
我的功能文件名为SystemSolentraCustomKarateMethods.feature
这是当前内容(目前只包含一个功能):
Feature: System Solentra Status Test
Background:
* def checkreturneddatetimeiscorrect =
#The following code compares the passed in datetime with the current systemdatetime and
#makes sure they are within 2 seconds of each other
"""
function(datetime) {
var datenow = new Date();
karate.log("***The Date Now = " + datenow.toISOString() + " ***");
var timenow = datenow.getTime();
karate.log("***The Time Now in Milliseconds = " + timenow+ " ***");
karate.log("***The Passedin Date = " + datetime + " ***");
var passedintime = new Date();
passedintime = Date.parse(datetime);
karate.log("***The Passed in Time = " + passedintime+ " ***");
var difference = timenow - passedintime;
karate.log("***The Time Difference = " + difference + " milliseconds ***");
return (difference < 2000)
}
"""
答案 0 :(得分:2)
谢谢彼得,我现在已经想出了如何做到这一点。
(1)包含函数的特征文件必须具有Feature,Background和Scenario标记 - 即使您的文件不包含任何场景。 (*请参阅下面的示例文件)
(2)在要调用FROM的要素文件中,将以下代码添加到背景部分:
* call read('yourfilename.feature')
(3)您现在可以使用被调用特征文件中的函数
以下是我正在调用的功能文件的结构:
Feature: Custom Karate Methods
This feature file contains Custom Karate Methods that can be called and used from other Feature Files
Background:
* def *nameofyourfunction* =
#Comment describing the fuction
"""
function() {
*code*
}
"""
****Scenario: This line is required please do not delete - or the functions cannot be called****
答案 1 :(得分:1)
我认为您已经在这里看到了答案,这个问题完全重复:https://stackoverflow.com/a/47002604/143475(编辑:好的,也许不是)
无论如何,我会重复我在那里发布的内容:
call
进行该功能时,所有功能都可用,是的,但是如果您不使用它们,那就没关系。如果你担心性能和内存,恕我直言,这是不成熟的优化Foo
。然后你可以{em} Foo.myMethodOne()
,Foo.myMethodTwo()
。在你的情况下,我强烈推荐这种方法,因为你似乎期待实用程序方法的爆炸式增长,而且根据我的经验,这可以在Java中更好地管理,因为你可以更好地维护代码,IDE支持,单元测试,调试和所有希望有意义!