karate - Java 堆空间错误,用于响应具有巨大负载的响应 | 空手道 1.0.1
问题描述
我们目前在我们的测试框架中使用空手道 0.9.6,并且要求以某种方式将整个响应主体与存储为 json 的文件匹配(这是一个基于金融的应用程序,我们需要验证整个响应主体)
我正在尝试按照升级指南迁移到 1.0.1
在升级到 1.0.1 后,我们针对保存的响应断言的场景因 Java 堆空间错误而失败
由于安全限制,我无法将响应主体放在这里,所以我尝试使用具有大型响应主体的开源 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:我已经把这里提到的所有步骤
解决方案
抱歉,没有足够的信息来复制。我尝试了以下方法并且有效:
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')
推荐阅读
- laravel - 用于更新的 Livewire 通行证 ID
- r - 插值以获得 R 中的某个值
- python-3.x - Django Queryset 而不是 view.py 中的 for 循环和 if 语句
- php - 在文件顶部添加带有 php simplexml 的新子节点
- python-3.x - 如何让 Tensorflow 使用更多的 RAM?
- c++ - 监视剪贴板更改 c++ 适用于所有应用程序 (Windows)
- c - 在不使用 strstr 的情况下从文件中提取包含字符串的行到另一个文件中
- c# - 尝试分配类时.Net转换错误CS0029和CS0266
- ruby-on-rails - 为什么此登录表单失败且没有错误?
- json - 如何将完整的 json 数据映射到我的代码中?现在我一次只能做一个条目