【问题标题】:unable to update variables in a called feature无法更新被调用特征中的变量
【发布时间】:2019-01-04 00:01:55
【问题描述】:

我正在尝试按照演示中的示例进行操作: https://github.com/intuit/karate/tree/master/karate-demo/src/test/java/demo/callfeature 我需要从一个功能调用另一个功能,并将引用传递给更新。该参考适用于从文件中读取的 JSON:

  Background: 
    * url url
    * header Authorization = token
    * def payload = read('event.json')
    * set payload.createdByUser = 'karate'

  Scenario: Call another feature with arg
    * call read('classpath:common/swap-json-elements.feature') payload
    * print payload

在我的 swap-json-elements.feature 中:

  Background: 
    * set new = payload.old
    * set payload.new= payload.old
    * set payload.old= new

这不起作用。在文档中很清楚,当我们使用“set”时,共享范围是共享的,而“def”将创建一个新变量,并且永远不会更新共享的变量。

我错过了什么?

【问题讨论】:

    标签: karate


    【解决方案1】:

    如果你传递一个参数,它是按值传递的。当您 call 使用“共享范围”时,您通常不需要传递参数。因为无论如何所有变量都是可见的。尝试一个更简单的例子,请注意= 符号周围的空白。

    main.feature:

    Feature:
    
    Background:
    * def json = { foo: 'bar' }
    * call read('called.feature')
    
    Scenario:
    * match json == { foo: 'baz' }
    

    called.feature

    Feature:
    
    Scenario:
    * set json.foo = 'baz'
    * match json == { foo: 'baz' }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-21
      • 2019-07-03
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多