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)