Karate 空手道:如何使用来自不同功能文件的Javascript函数

Karate 空手道:如何使用来自不同功能文件的Javascript函数,karate,Karate,我创建了一个功能文件,其中将包含许多javascript函数 在不同的功能文件中,我想使用其中一个函数(并传入一个值) 请问我该怎么做 我的功能文件名为SystemSolentraCustomKarateMethods.feature 以下是当前内容(当前仅包含一个函数): 功能:系统电磁阀状态测试 背景: *def CheckReturnedDateTime是否正确= #下面的代码将传入的datetime与当前的systemdatetime和 #确保它们之间的距离不超过2秒 """ 函数(日期

我创建了一个功能文件,其中将包含许多javascript函数

在不同的功能文件中,我想使用其中一个函数(并传入一个值)

请问我该怎么做

我的功能文件名为SystemSolentraCustomKarateMethods.feature

以下是当前内容(当前仅包含一个函数):

功能:系统电磁阀状态测试
背景:
*def CheckReturnedDateTime是否正确=
#下面的代码将传入的datetime与当前的systemdatetime和
#确保它们之间的距离不超过2秒
"""
函数(日期时间){
var datenow=新日期();
karate.log(“***现在的日期=”+datenow.toISOString()+“***”);
var timenow=datenow.getTime();
karate.log(“***以毫秒为单位的当前时间=“+timenow+”***”);
空手道日志(“***传递的日期=“+datetime+”***”);
var passedintime=新日期();
passedintime=Date.parse(datetime);
空手道日志(“***传入时间=“+PassedTime+”***”);
var差异=timenow-PassedTime;
空手道日志(“***时差=“+时差+”毫秒***”);
返回值(差值<2000)
}
"""

我想你已经在这里看到了答案,这个问题完全是重复的:(编辑:好,也许不是)

无论如何,我将重复我在那里发布的内容:

  • 当您在一个功能中定义多个函数并从多个其他功能调用它时,没有问题
  • 无论如何,每个函数都需要一个唯一的名称
  • 当您为该功能使用
    call
    时,所有功能都将可用,是的,但如果您不使用它们,则可以。如果您担心性能和内存,那么这是过早的优化
  • 如果这听起来还不够好,那么实现您想要的功能的一种方法是使用一组静态方法定义一个Java类
    Foo
    。然后你可以随心所欲地做
    Foo.myMethodOne()
    Foo.myMethodTwo()
    。在您的案例中,我强烈推荐这种方法,因为您似乎期待着实用程序方法的爆炸式增长,而且根据我的经验,这种方法在Java中管理得更好,因为您可以更好地维护代码、IDE支持、单元测试、调试等等

希望这有意义

我想你已经在这里看到了答案,这个问题完全是重复的:(编辑:好,也许不是)

无论如何,我将重复我在那里发布的内容:

  • 当您在一个功能中定义多个函数并从多个其他功能调用它时,没有问题
  • 无论如何,每个函数都需要一个唯一的名称
  • 当您为该功能使用
    call
    时,所有功能都将可用,是的,但如果您不使用它们,则可以。如果您担心性能和内存,那么这是过早的优化
  • 如果这听起来还不够好,那么实现您想要的功能的一种方法是使用一组静态方法定义一个Java类
    Foo
    。然后你可以随心所欲地做
    Foo.myMethodOne()
    Foo.myMethodTwo()
    。在您的案例中,我强烈推荐这种方法,因为您似乎期待着实用程序方法的爆炸式增长,而且根据我的经验,这种方法在Java中管理得更好,因为您可以更好地维护代码、IDE支持、单元测试、调试等等

希望这有意义

谢谢彼得,我现在已经知道怎么做了

(1) 包含函数的功能文件必须具有功能、背景和方案标记-即使文件不包含任何方案。(*参见下面的示例文件)

(2) 在从调用的功能文件中,将以下代码添加到背景部分:

* 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) 包含函数的功能文件必须具有功能、背景和方案标记-即使文件不包含任何方案。(*参见下面的示例文件)

(2) 在从调用的功能文件中,将以下代码添加到背景部分:

* 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****

看来我误解了这个问题。无论如何,这可能对其他人有用,所以我把它留在这里。看起来我误解了这个问题。无论如何,这可能对其他人有用,所以我将把它留在这里。很公平,很抱歉。你不觉得在花了很多时间打字的情况下,不在堆栈溢出上投票是不礼貌的吗?好吧,这么做吧(我以前从未使用过堆栈溢出,所以我不知道礼节)。我仍然认为我的函数在被调用文件的背景下更好。如果我将其移动到Scenario部分,则在调用该文件时将运行该函数。我只想在需要的时候运行它,如果我把它放在后台就可以了。据我所知,应该没有区别。一个建议,看看这里的第17行,这是一种从文件中使用JS函数的方法,这可能就是您所需要的:谢谢Peter。是的,我本来打算使用一个.js文件,但在空手道中,每个.js文件只能有一个函数。您建议使用.feature文件,我现在已经这样做了。我将使用它作为一个主文件来包含几个javascript函数,这些函数可以在其他功能文件中使用——现在我知道如何做了。他说我明天可以接受答复。我星期一做。谢谢你的帮助。很公平,很抱歉。你不觉得在花了很多时间打字的情况下,不在堆栈溢出上投票是不礼貌的吗?好吧,这么做吧(我以前从未使用过堆栈溢出,所以我不知道礼节)。我是