Karate 针对大型动态响应的断言
我有一个非常大的响应数组,我想断言它,但不知道它的顺序。我有一个带有预期响应值的变量,所以我可以进行一个巨大的比较,但是我无法加载整个响应并同时将其与整个预期响应变量进行比较Karate 针对大型动态响应的断言,karate,Karate,我有一个非常大的响应数组,我想断言它,但不知道它的顺序。我有一个带有预期响应值的变量,所以我可以进行一个巨大的比较,但是我无法加载整个响应并同时将其与整个预期响应变量进行比较 * def obligationsQuery = Java.type("tests.account.sql.Obligations").getObligations(division, account) * def getObligations = db.readRows(obligationsQuery)
* def obligationsQuery = Java.type("tests.account.sql.Obligations").getObligations(division, account)
* def getObligations = db.readRows(obligationsQuery)
Given path "account", "v1", "accounts", systemId, "obligations"
And header api-key = gatewayKey
When method GET
Then status 200
And match $.data != null
And match $.data[*].transactionType contains any "<transactionTypeResponse>"
And match $.data[*] contains only getObligations
Examples:
| description | transactionType | transactionTypeResponse |
| Invoice | 001 | invoice
我也试过:
并匹配每个$。数据[*]仅包含GetResponsibilities
但我得到:
get_obligations_collection.feature:49 - path: $[0], actual: [{"object1"}, expected: [{"object1"}, {"object2"}, {"etc"}, reason: actual value is not list-like
我假设
$.data
是一个JSON数组,因此无需使用JSON路径通过调用$.data[*]
将数据再次获取到另一个数组中
所以
和match$。数据仅包含GetResponsibilities
应该有用
如果这仍然不起作用,请提供一些适当的
响应
和获取义务
值以进一步调查。我假设仅包含
将显示我变量的完整值,但很聪明,它只显示与api响应对象不匹配的对象。能够通过一个更简单的断言来验证这一点,然后检查错误消息,发现一个ID缺少API添加的填充,但DB没有
像往常一样,只要更仔细地查看返回的数据就可以提供一个简单的解释。是的,空手道仍然处理
$.data[*]
,但您是正确的,不需要。
get_obligations_collection.feature:49 - path: $[0], actual: [{"object1"}, expected: [{"object1"}, {"object2"}, {"etc"}, reason: actual value is not list-like