如何将响应的两个 JSON 列表传递到另一个功能文件

问题描述 投票:0回答:1

我必须将 2 个列表传递给读取函数,但我不能。我尝试了很多方法,但没有找到解决方案。 这是我所做的

#步骤1

    * url callPathProvider = anything
    Given url callPath
    When method get
    Then status 200

#检索具体值

      * def array1 = ...

#对于这一部分我参考如何将一个功能文件的json列表响应作为参数传递给另一个功能文件

     * def data1 = karate.map(array1, function(x){ return { channelDefId: x } })
     * print data1

打印结果:

    [
      {"channelDefId":"201"},
      {"channelDefId":"301"},
      {"channelDefId":"401"},
      {"channelDefId":"501"}
      ...
    ]
      * def array2 = array1.map(x => x.replace('01', '') * 1)
      * def data2 = karate.map(array2, function(x){ return { listOfId: x } })
      * print data2

打印结果:

   [
    {"listOfId":2},
    {"listOfId":3},
    {"listOfId":4},
    {"listOfId":5}
    ...
    ]

#步骤2

    * def result = call read('called.feature')(data2, data1)
=> this is not working, I got 

功能调用循环在索引:0处失败,js失败: 01:[listOfId、'channel_definitions'、channelDefId、'authorize_url'] org.graalvm.polyglot.PolyglotException:ReferenceError:“channelDefId”未定义。:程序(未命名:1)

并且

called.feature
是:

   Feature:

   Scenario:
    Given url 'part1'
    And path  listOfId, 'part2', channelDefId, 'part3'
    When method POST
    Then status 201

我尝试使用一个列表,例如: * def 结果 = call read('used.feature') data1 或者 * def 结果 = call read('used.feature') data2 它按预期工作了

json karate
1个回答
0
投票

我删除了主文件的这一部分

  • def array2 = array1.map(x => x.replace('01', '') * 1)
  • def data2 = karate.map(array2, function(x){ return { listOfId: x } })

并将其添加到名为.feature的文件中:

  • def listOfId = xx.replace('01', '')

这不是我想要的,但它有效。

如果有人知道如何做到这一点: def 结果 = call read('called.feature') list1 list2

艾莉西亚

© www.soinside.com 2019 - 2024. All rights reserved.