空手道匹配两个 json 文件(预期 json 和 API 响应),无论数组元素的顺序如何

问题描述 投票:0回答:2

预期回应:

{"data":{
{"assignments":[{"locationId":"1186755","locationName":"X.11.11"},{"locationId":"1186756","locationName":"X.11.12"}]}}}

回应:

{"data":{
{"assignments":[{"locationId":"1186756","locationName":"X.11.12"},{"locationId":"1186755","locationName":"X.11.11"}]}}}

我看到一篇帖子说要使用 karate.sort(response, x=>x.locationId),当我尝试时它给了我空响应。有没有什么简单的方法可以实现对整个响应文件进行比较,而不考虑顺序?

注意:我什至尝试过 contains only,但断言失败。

karate functional-testing
2个回答
0
投票

只需使用

contains deep
https://stackoverflow.com/a/64373344/143475

* def response = {"assignments":[{"locationId":"1186755","locationName":"X.11.11"},{"locationId":"1186756","locationName":"X.11.12"}]}}}
* match response contains deep {"assignments":[{"locationId":"1186756","locationName":"X.11.12"},{"locationId":"1186755","locationName":"X.11.11"}]}}}

0
投票

有没有一种方法可以将响应与期望的 json 相匹配。 json 可能因嵌套和数组而变得复杂。我尝试了“响应包含深度”,但收到错误 - TestRunner > testAll() > karate.xyz.TestRunner.initializationError FAILED FeatureParser.java 处的 java.lang.RuntimeException:74

我的功能文件包含

并且匹配响应包含深层{ JSON }

其中 JSON 是浏览器开发人员工具中显示的内容。

== 当替换“contains deep”时也会类似失败

© www.soinside.com 2019 - 2024. All rights reserved.