Java 堆 space 负载巨大的响应错误 |空手道 1.0.1

Java Heap space error for response with huge payload | karate 1.0.1

我们目前在我们的测试框架中使用空手道 0.9.6,要求以某种方式将整个响应主体与存储为 json 的文件相匹配(这是一个基于金融的应用程序,我们需要验证整个响应主体)

我正在尝试根据 upgrade guide

迁移到 1.0.1

升级到 1.0.1

后,我们针对保存的响应断言的场景失败并出现 Java 堆 space 错误

由于安全限制,我无法将响应主体放在这里,所以我尝试使用开源 api 和大型响应主体,但在以下用例中失败了

Given url "https://jsonplaceholder.typicode.com/photos"
And json expected_resp =read('classpath:<path_to_saved_file>/response.json')
When method GET 
Then status 200
Then match response  == '#(^^expected_resp)'

PS:我已经完成了here

中提到的所有步骤

抱歉,信息不足,无法复制。我尝试了以下方法并且有效:

Given url "https://jsonplaceholder.typicode.com/photos"
When method GET 
Then status 200

无论如何我们已经打开了一个问题,但如果我们无法复制,将在一两天内将其关闭:https://github.com/intuit/karate/issues/1572

这是一个开源项目,我们依赖于您的贡献或至少更好的信息。

编辑:非常大的 JSON 数组的解决方案是对数组进行排序(现在在空手道 1.0 中很容易实现)然后进行精确匹配 - 这将避免执行 contains匹配。

* def sorted = karate.sort(response, x => x.id)
* match sorted == read('photos.json')