我想对一个很大的响应数组进行断言,但不知道顺序。我有一个具有预期响应值的变量,因此可以进行一次巨型比较,但是我无法加载整个响应并将其与整个预期响应变量同时进行比较。
* 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
我得到的错误是:
get_obligations_collection.feature:49 - path: $.data[*][*], actual: [{"object1"}, {"object2"}, {"etc"}], expected: {"object1"}, reason: actual value does not contain expected
我也尝试过:
And match each $.data[*] contains only getObligations
但是我得到了:
get_obligations_collection.feature:49 - path: $[0], actual: [{"object1"}, expected: [{"object1"}, {"object2"}, {"etc"}, reason: actual value is not list-like
答案 0 :(得分:0)
我假设$.data
是一个JSON数组,因此无需使用json-path通过以$.data[*]
的方式再次将数据获取到另一个数组中。
所以
And match $.data contains only getObligations
应该工作。
如果仍然无法执行,请提供适当的response
和getObligations
值以进行进一步调查。
答案 1 :(得分:0)
我假设contains only
将显示变量的完整值,但是很聪明,它仅显示与api响应对象不匹配的对象。能够通过更简单的断言来验证这一点,然后检查错误消息,发现ID缺少API添加的填充,而DB没有。
和往常一样,只需更仔细地查看返回的数据即可提供简单的解释。