空手道中的动态响应验证

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

'我们有API,其响应如下,键(湿度,温度)是动态的,取决于如何在空手道中验证模式的请求

{   "en_humidity": [
    {
      "value": "48",
      "ts": 1718279604644
    }   ],   "temperature": [
    {
      "value": "decryption failed",
      "ts": 1717580459552
    }   ],   "humidity": [
    {
      "value": "decryption failed",
      "ts": 1718279604644
    }   ] }
karate
1个回答
0
投票

首先阅读本文。也许您不应该尝试在测试中执行“逻辑”。根据我的经验,它只会使事情变得更加复杂,并且您的测试变得不那么可读:https://stackoverflow.com/a/54126724/143475

但作为一个例子,你可以这样做。

* def data = []
* karate.forEach(response, (k, v) => data.push(v[0]) )
* match each data == { value: '#string', ts: '#number' }

前两行将重复部分“展平”为单个 JSON 数组,然后你的断言就变得简单了。此处详细解释:https://stackoverflow.com/a/76912833/143475 - 因此您可以按照相同的方式添加所需的任何自定义逻辑。

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