代码之家  ›  专栏  ›  技术社区  ›  artnikpro

有什么方法可以避免在vue test utils中使用shallowmount时发生内存泄漏?

  •  1
  • artnikpro  · 技术社区  · 6 年前

    我们在node、mocha和jsdom包上为vue定制了一个单元测试设置,它模拟浏览器环境(没有webpack、karma)。我们已经编写了大约3k个规范(包含数百个组件的大型应用程序),现在当mocha运行时,它会变得越来越慢,最终进程会挂起。我们认为“jsdom”中可能存在内存泄漏,所以我们将其改为“domino”(可选包),但它仍然挂起。

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

    所以我们认为问题出在vue或vue测试实用程序上。每次我们使用 mount / shallowMount 每次测试后需要销毁/卸载它以释放内存?

    有什么想法吗?提前谢谢!

    0 回复  |  直到 6 年前
        1
  •  0
  •   Pascal    5 年前

    我找到的最佳方法是在测试套装之后将包装设置为空

    下面使用摩卡咖啡的例子

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

    在我的例子中有一个巨大的不同,就是在多次运行测试之后,内存泄漏大约8gb,现在使用了大约300mb

    javascript具有自动内存管理和垃圾收集功能。如果去掉对一段数据的所有引用,内存将被回收

    希望这有帮助

    谢谢你的投票