【问题标题】:Karate - Is there a way to add a new json key/value pair to an existing JSON object where the key is the same and values are different? [duplicate]空手道 - 有没有办法将新的 json 键/值对添加到键相同但值不同的现有 JSON 对象? [复制]
【发布时间】:2021-06-20 12:52:15
【问题描述】:

我是 JavaScript 和空手道的新手。这本身可能不是一个以空手道为中心的问题,但是,我想知道解决方案是否可以在空手道本地完成。

我已经查看了此处的现有问题,但由于我的独特输入,它们似乎不太可能起作用。这个答案看起来很有希望,但对我来说并不奏效:Adding new key-value pair into json using karate

我有一个 JAVA 方法,它为 POST 调用生成一个由 JSON 对象(其中有一个辅助 json 对象)组成的有效负载。有效载荷看起来像这样:

[
  {
    "keyId": "s123",
    "clientId": "c0909",
    "regionInfo": {
      "geoTag": "3s98d238",
      "locationId": 32
    }
  }
]

现在我正在做一个测试,我必须在有效负载中插入一个虚假的键/值对,并确保它在 POST 调用本身中被忽略,我们返回 200。我尝试使用 karate.merge 和 karate。追加,但到目前为止他们还没有工作。

键值对如下所示:

{'bogusfield': 'ABC', 'bogusfield': '123', 'bogusfield': 'abc123', 'bogusfield': 'abc123!$%'}

所以总共会有四个 POST 调用,每个调用的值都与上面不同。有没有办法完成这项工作?如果我错过了提供任何关键细节/和/或如果这个问题太新奇,我深表歉意。提前感谢您的所有帮助!

【问题讨论】:

    标签: api automated-tests karate


    【解决方案1】:

    下面是一个简单的示例,它发出 4 个请求,其中包含您想要的有效负载编辑,这应该会让您顺利上路:

    Feature:
    
    Scenario Outline:
    * url 'https://httpbin.org'
    * path 'anything'
    * def body = { foo: 'bar' }
    * body.bogusField = bogusValue
    * request body
    * method post
    
    Examples:
    | bogusValue |
    | ABC        |
    | 123        |
    | abc123     |
    | abc123!$%  |
    

    【讨论】:

    • 如果我正确阅读了您的解决方案,您提出了一个名为“body”的实际有效负载之外的字段并发送这些请求,对吗?我做了一些完全相似的事情,但是,要求是这个“虚假字段”必须是实际有效负载的一部分。所以在我原来的帖子中,必须发生以下情况:``` [ { "keyId": "s123", "clientId": "c0909", "bogusField":abc" "regionInfo": { "geoTag": "3s98d238" , "locationId": 32 } } ] ```
    • 我很抱歉对一个封闭的问题发表评论,但我在其他地方看到了你关于使用 karate.set 的回复。如果我使用一个值,它确实对我有用。但是由于我对同一个键有多个值,每个值都需要包含在有效负载调用中——总共有四个,karate.set 还能以某种方式使用吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多