【问题标题】:Is it possible to have multiple JS functions inside one JS file of karate framework?空手道框架的一个JS文件中是否可以有多个JS函数?
【发布时间】:2018-03-20 10:36:55
【问题描述】:

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

【问题讨论】:

    标签: karate


    【解决方案1】:

    我不建议尝试在空手道中创建复杂的 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() + '' }
    

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

    * call read('common.feature')
    

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

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

    【讨论】:

    • 我发现自己很难一口气调用*.feature 文件和js。在您的common.feature 示例中,整个文件是这样概述的吗? Background:* def now = function(){ return java.lang.System.currentTimeMillis() }* def uuid = function(){ return java.util.UUID.randomUUID() + '' }
    【解决方案2】:

    @kmancusi 这就是我使用常用​​功能创建common.feature 文件的方法,然后下面的my.test.feature 显示了我如何导入它以在另一个功能中使用它。

    common.feature

    @ignore
    Feature:
    
    Scenario:
      * def now = 
          """
            function() { 
              return java.lang.System.currentTimeMillis() 
            }
          """ 
    
      * def uuid = 
         """
           function() { 
             return java.util.UUID.randomUUID() + '' 
           }
         """
    

    my.test.feature

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多