karate.filterKeys() API 对于复杂的 JSON 对象
karate.filterKeys() API for complex JSON object
问完
就想到了这个问题
假设我的响应是 JSON 对象的复杂数组,目前我这样测试复杂对象。
* def response = [{id: 1}, {id: 2}, {id: 3}.....]
* def schema = { id: "#number" }
* match response == '#[] schema'
我想用 filerKeys() API 替换上面的匹配语句,可能如下所示
* match response == karate.filterKeys([]schema, response)
基本上 karate.filterKeys() API 的第一个参数应该动态地接受来自响应数组的每个 JSON 对象,并针对第二个参数响应进行过滤以获得成功匹配。
我认为您正在尝试为 JSON 数组中的每个 JSON 值动态更改架构。
您可以创建等效的 JSON 数组架构并执行 match ==
* def response = [{id: 1},{id: 2}, {id: 3}]
* def schema = { id: '#number' }
* def fun = function(x){ return karate.filterKeys(schema,x) }
* match response == karate.map(response, fun)
问完
假设我的响应是 JSON 对象的复杂数组,目前我这样测试复杂对象。
* def response = [{id: 1}, {id: 2}, {id: 3}.....]
* def schema = { id: "#number" }
* match response == '#[] schema'
我想用 filerKeys() API 替换上面的匹配语句,可能如下所示
* match response == karate.filterKeys([]schema, response)
基本上 karate.filterKeys() API 的第一个参数应该动态地接受来自响应数组的每个 JSON 对象,并针对第二个参数响应进行过滤以获得成功匹配。
我认为您正在尝试为 JSON 数组中的每个 JSON 值动态更改架构。
您可以创建等效的 JSON 数组架构并执行 match ==
* def response = [{id: 1},{id: 2}, {id: 3}]
* def schema = { id: '#number' }
* def fun = function(x){ return karate.filterKeys(schema,x) }
* match response == karate.map(response, fun)