vue.js - 有什么方法可以避免 vue-test-utils 中的 shallowMount 导致内存泄漏?
问题描述
我们有一个针对 vue 的自定义单元测试设置,它适用于模拟浏览器环境(无 webpack、karma)的 Node、Mocha 和 jsdom 包。我们已经编写了大约 3k 规范(包含数百个组件的大型应用程序),现在当 mocha 运行时,它变得越来越慢,最终进程挂起。我们认为“jsdom”可能存在内存泄漏,因此我们将其更改为“domino”(替代包),但它仍然挂起。
我们检查了堆内存使用情况,它一直在增长(高达 1.5 GB!)。
所以我们认为问题出在 vue 或 vue-test-utils 上。看起来每次我们使用mount
/shallowMount
它都需要在每次测试后销毁/卸载以释放内存?
有任何想法吗?提前致谢!
解决方案
我发现的最好方法是在测试服之后将包装器设置为 null
下面的示例使用 mocha
describe(" View ", () => {
let wrapper;
beforeEach() {
wrapper = mount(Com.Vue, { localVue }) ;
});
after( ()=> {
wrapper = null ;
});
});
在我的情况下,它产生了巨大的差异,即在多次运行测试后内存泄漏约为 8gb,现在使用约 300mb
JavaScript 具有自动内存管理和垃圾收集功能。如果你摆脱了对一条数据的所有引用,内存将被回收
希望这可以帮助
感谢投票
推荐阅读
- python - 使用 BeautifulSoup 抓取对冲基金数据
- three.js - 纹理的类型和格式之间有什么关系
- angular - ChangeDetectorRef 的 Angular 单元测试检测更改
- sql - Db2 控制台未在 IBM 云中加载
- imgur - 设置 Imgur API:在文档的第 5 步生成访问令牌时出现错误状态 400
- reactjs - 你好!我正在尝试使用从后端收到的 json 制作图表,但我无法解析它
- python - Python pandas - 将日期和时间列加入带有时区的日期时间列
- css - 应用后如何反转关键帧
- python - Python Numpy - 为多个组聚合 numpy 数组
- javascript - 如何让我的函数使用不同的参数多次运行?