空手道:如何使用不同特征文件中的 Javascript 函数
Karate: How to use a Javascript function from a DIFFERENT feature file
我创建了一个包含大量 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)
}
"""
我想你已经在这里看到了答案,这个问题是完全重复的:(编辑:好的,也许不是)
无论如何,我会重复我在那里发布的内容:
- 在一个特性中定义多个函数并从多个其他特性中调用它是没有问题的
- 无论如何,每个函数都需要一个唯一的名称
- 当您为该功能使用
call
时,所有功能都将可用,是的,但如果您不使用它们,也没关系。如果您担心性能和内存,恕我直言,这是过早的优化
- 如果这听起来还不够好,实现您想要的效果的一种方法是用一堆静态方法定义 Java class
Foo
。那么你就可以Foo.myMethodOne()
,Foo.myMethodTwo()
尽情享受了。在你的情况下,我强烈推荐这种方法,因为你似乎期待实用方法的爆炸式增长,根据我的经验,在 Java 中更好地管理它,只是因为你可以更好地维护该代码,IDE 支持、单元测试、调试和所有
希望这是有道理的!
谢谢彼得,我现在已经知道怎么做了。
(1) 包含功能的功能文件必须具有功能、背景和场景标签 - 即使您的文件不包含任何场景。 (*请参阅下面的示例文件)
(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****
我创建了一个包含大量 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)
}
"""
我想你已经在这里看到了答案,这个问题是完全重复的:
无论如何,我会重复我在那里发布的内容:
- 在一个特性中定义多个函数并从多个其他特性中调用它是没有问题的
- 无论如何,每个函数都需要一个唯一的名称
- 当您为该功能使用
call
时,所有功能都将可用,是的,但如果您不使用它们,也没关系。如果您担心性能和内存,恕我直言,这是过早的优化 - 如果这听起来还不够好,实现您想要的效果的一种方法是用一堆静态方法定义 Java class
Foo
。那么你就可以Foo.myMethodOne()
,Foo.myMethodTwo()
尽情享受了。在你的情况下,我强烈推荐这种方法,因为你似乎期待实用方法的爆炸式增长,根据我的经验,在 Java 中更好地管理它,只是因为你可以更好地维护该代码,IDE 支持、单元测试、调试和所有
希望这是有道理的!
谢谢彼得,我现在已经知道怎么做了。
(1) 包含功能的功能文件必须具有功能、背景和场景标签 - 即使您的文件不包含任何场景。 (*请参阅下面的示例文件)
(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****