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

vad*_*elu 7 karate

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

Pet*_*mas 12

我不建议尝试在空手道中创建复杂的 JavaScript,它只会导致可维护性问题。如果您确实想要一个具有多个实用方法的对象,请编写一个具有静态方法的Java类,这样维护/调试会容易得多。

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

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

Scenario:
* def now = function(){ return java.lang.System.currentTimeMillis() }
* def uuid = function(){ return java.util.UUID.randomUUID() + '' }
Run Code Online (Sandbox Code Playgroud)

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

* call read('common.feature')
Run Code Online (Sandbox Code Playgroud)

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

* def time = now()
* def id = uuid()
Run Code Online (Sandbox Code Playgroud)

  • 我发现自己很难一次性调用“*.feature”文件和js。在您的“common.feature”示例中,整个文件的概述是这样的吗?`背景:` `* def now = function(){ return java.lang.System.currentTimeMillis() }` `* def uuid = function(){ return java.util.UUID.randomUUID() + '' }` (2认同)

Sha*_*att 5

@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() + '' 
       }
     """
Run Code Online (Sandbox Code Playgroud)

我的测试功能

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
Run Code Online (Sandbox Code Playgroud)