如何在空手道中的地图请求中的数组中设置值

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

感谢阅读。我正在使用空手道进行后端测试,我需要在我的请求中更新地图内数组的 de 值。但我做不到

我正在使用这个请求;

{
  "data": [
    {
      "startDate": "date",
      "endDate": "date",
      "displayDate": "date",
      "partnerId": "partner",
      "type": "type",
      "regions": ["QQ"
      ],
      "promotionId": "promotion",
    }
  ]
}

我想更新/覆盖“区域”值。但我不能让空手道访问它,它永远找不到。我试过:

* set request.data.regions = newValue   
* set request.data[*].regions = newValue
* set request[*].regions = newValue
* def updateRegion =
      """
      function(){karate.appendTo(request.data[*].regions, newValue) }
      """
* karate.foreach(request, updateRegion)

没有任何作用。值得一提的是,我能够使用以下方法获取区域数据:

* def value = get request.data[*].regions

问题是要么 Karate 不识别 jsonpath 获取 key,并抛出错误:

    org.graalvm.polyglot.PolyglotException: SyntaxError: Unnamed:1:32 Expected an operand but found *
karate.appendTo(blankOffer.data[*].regions, 'table.region')

或者它只是没有找到所述键并返回空值:

Cannot invoke "com.intuit.karate.core.Variable.isList()" because "var" is null

我做错了什么??请帮忙!

json dictionary request karate jsonpath
1个回答
0
投票

你需要注意结构。试试这个,很简单 JS:

* def body = 
"""
{
  "data": [
    {
      "startDate": "date",
      "endDate": "date",
      "displayDate": "date",
      "partnerId": "partner",
      "type": "type",
      "regions": [
        "QQ"
      ],
      "promotionId": "promotion"
    }
  ]
}
"""
* body.data[0].regions = ['foo', 'bar']
* print body
© www.soinside.com 2019 - 2024. All rights reserved.