首页 > 解决方案 > 有什么方法可以避免 vue-test-utils 中的 shallowMount 导致内存泄漏?

问题描述

我们有一个针对 vue 的自定义单元测试设置,它适用于模拟浏览器环境(无 webpack、karma)的 Node、Mocha 和 jsdom 包。我们已经编写了大约 3k 规范(包含数百个组件的大型应用程序),现在当 mocha 运行时,它变得越来越慢,最终进程挂起。我们认为“jsdom”可能存在内存泄漏,因此我们将其更改为“domino”(替代包),但它仍然挂起。

我们检查了堆内存使用情况,它一直在增长(高达 1.5 GB!)。

所以我们认为问题出在 vue 或 vue-test-utils 上。看起来每次我们使用mount/shallowMount它都需要在每次测试后销毁/卸载以释放内存?

有任何想法吗?提前致谢!

标签: vue.jsvuejs2vue-test-utils

解决方案


我发现的最好方法是在测试服之后将包装器设置为 null

下面的示例使用 mocha

describe(" View ", () => {
   let wrapper;
   beforeEach() { 
        wrapper = mount(Com.Vue, { localVue }) ; 
   });
   after( ()=> { 
        wrapper = null ; 
   });
});

在我的情况下,它产生了巨大的差异,即在多次运行测试后内存泄漏约为 8gb,现在使用约 300mb

JavaScript 具有自动内存管理和垃圾收集功能。如果你摆脱了对一条数据的所有引用,内存将被回收

希望这可以帮助

感谢投票


推荐阅读