我们目前正在开发一个 angularjs 项目,其中包含大约 2500 个 Jasmine 测试用例。我们使用 chrome 作为浏览器和 karma-ng-html2js-preprocessor 来预处理我们的模板。
我们现在面临的问题是我们的测试消耗了大量内存并且我们的 karma 服务器断开连接,因为后面的测试花费的时间太长。大约 2000 个测试在 3 分钟内执行,但最后 500 个测试最多需要 10 分钟。我们尝试了在网上找到的几种解决方案来解决这个问题,但没有任何效果。我们尝试了以下解决方案:
- 使用此运算符:https://gist.github.com/traviskaufman/11131303
- 在 afterEach 中声明变量:https://blog.thecodecampus.de/avoid-memory-leaks-angularjs-unit-tests/
我们使用chrome内存快照工具分析了内存使用情况。第一个快照是在 300 次测试后拍摄的,第二张快照是在 600 次测试后拍摄的。
有人能帮忙解决这个问题吗?不幸的是,我们不允许显示某些代码。但我们的测试与您在网络上找到的 Angular Jasmine 示例没有什么不同。
最佳答案
如果在“describe” block 内部但在“it”外部使用变量,则使用 Angular 进行 Jasmine 测试可能会产生内存泄漏。未清除的 html 元素也会累积泄漏。
很好的描述: https://developers.google.com/web/updates/2017/04/headless-chrome#frontend
关于AngularJS Karma 单元测试内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46218987/