空手道框架:在父API中寻找子API响应(动态的)

时间:2020-02-17 17:42:42

标签: karate

我有一个方案,其中父API响应的一部分来自子API。如果子API响应(动态的)只有一个数组元素,则无需与父API响应中的数组元素匹配,if array size > 1那么我需要从病房的索引1与父API响应进行匹配。

* def child =  {"array1":[{"mbr1":{"id":"A1"}},{"mbr2":{"id":"A2"}}]}

子api响应没有特定的顺序,array1可以有"n"个数组元素(mbr1,mbr2,mbr3, etc)

如果子API响应与上面类似,则父API如下所示:

* def parent =  {"parent":{"muid":"1234"},"elg":[{"EID":"E123"},{"members":[{"mbr2":{"id":"A2"}}]}]}

因此,仅在满足上述条件的情况下,才会向父API响应填充父API响应。 如果子API仅返回一个元素,则父API响应将如下所示:

* def parent = {"parent":{"muid":"1234"},"elg":[{"EID":"E123"}]}

那么,如果子级返回200 OK并且子级数组长度> 1,该如何匹配以查看子级是否存在于父级中? 因此,我正在寻找以下情况的解决方案:

if (child responseStatus == 200){
    if (child.array1.length > 1){
        for (i = 1;i <= child.array1.length; i++){
            parent.elg[1].members[i] contains child.arrays1[i]
        }
    }
}  

1 个答案:

答案 0 :(得分:0)

您在这里,请阅读文档:https://github.com/intuit/karate#conditional-logic

* def parentArray = parent.elg[1].array1
* def expected = child.array1.length > 1 ? child.array1 : parentArray
* match parentArray contains only expected