是否有可能在一个空手道框架的JS文件中有多个JS函数?

时间:2018-03-20 10:36:55

标签: karate

我需要对JSON响应的结果执行两个操作。那么我们可以在单个JS文件中包含那些不同的操作吗?或者我们是否需要像一个JS文件一样映射一个操作。 请帮助解决这个问题

2 个答案:

答案 0 :(得分:3)

我不建议尝试在空手道中创建复杂的JavaScript,这只会导致可维护性问题。如果你真的想要一个带有多个实用程序方法的对象,那么用静态方法编写一个Java类,维护/调试就会容易得多。

那就是说,如果你真的坚持 - 看看这个答案:https://stackoverflow.com/a/47002604/143475

但这是我对大多数项目的建议。在一个“常用”功能文件中,定义多个方法,如下所示:

* def now = function(){ return java.lang.System.currentTimeMillis() }
* def uuid = function(){ return java.util.UUID.randomUUID() + '' }

您现在可以像这样调用此功能:

* call read('common.feature')

现在该功能的所有功能都可以使用:

* def time = now()
* def id = uuid()

答案 1 :(得分:0)

@kmancusi这是我使用常用​​功能制作的common.feature文件的方法,然后下面的my.test.feature显示了如何导入该文件以将其用于其他功能。

常用功能

@ignore
Feature:

Scenario:
  * def now = 
      """
        function() { 
          return java.lang.System.currentTimeMillis() 
        }
      """ 

  * def uuid = 
     """
       function() { 
         return java.util.UUID.randomUUID() + '' 
       }
     """

我的测试功能

Feature: my tests

Background:
  * configure logPrettyRequest = true
  * configure logPrettyResponse = true
  * configure ssl = true

Scenario: basic test

  * def util = call read('common.feature')
  * def sessionId = util.uuid()

  * print sessionId