空手道:用条件替换多个键值

Karate: Replacing multiple key values with conditions

根据 env 变量的值有以下 2 个响应。

如果 env = Prod,

[
  {
    "_": {
      "name": "FA",
      "icon-url": "https://test.com/static/images/air/partner.png"
    },
    "@": {
      "code": "00"
    }
  },
  {
    "_": {
      "name": "DA",
      "icon-url": "https://test.com/static/images/air/partner.png"
    },
    "@": {
      "code": "0D"
    }
  }]

我们想用 prod.com

替换 test.com

如果环境是 SIT

[
  {
    "code": "00",
    "name": "FA",
    "iconUrl": "https://test.com/static/images/air/partner.png"
  },
  {
    "code": "0D",
    "name": "DA",
    "iconUrl": "https://test.com/static/images/air/partner.png"
  }
]

这里的问题是两个响应中的 iconUrl 键名不同。 如果环境是 Prod,我们想用 'prod.com' 替换 icon-url 'test.com' 如果环境是 SIT,我们想用 'sit.com'

替换 iconUrl 'test.com'

有很多方法可以解决这个问题。首先请阅读关于保持测试简单的建议:

关于条件逻辑的思路,参考:

一种可能的方法是拥有预期结果的两份副本。并根据环境,加载正确的:

* match response = read('expected-' + karate.env + '.json')

否则,关于如何根据某些参数修改给定的 JSON,我会留给您作为家庭作业。请阅读: - 以及其他链接的答案。