本文介绍了响应超大有效负载时出现Java堆空间错误|空手道1.0.1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我正在尝试根据upgrade guide迁移到1.0.1

我们对保存的响应进行断言的方案在升级到1.0.1后失败,出现Java Heap 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')

这篇关于响应超大有效负载时出现Java堆空间错误|空手道1.0.1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 19:41