gpt4 book ai didi

node.js - 是什么导致了这个问题: "Timeout of 10000ms exceeded. For async tests and hooks, ensure "done( )"is called;."

转载 作者:太空宇宙 更新时间:2023-11-03 23:56:55 25 4
gpt4 key购买 nike

在 VueJs Web 应用程序中,我们使用 vue-test-utils 和 mocha-webpack 编写了 500 多个单元测试用例(在所有模块中),并使用 nyc 进行覆盖率报告。考虑一个目录中的每个模块。当我为特定模块运行测试用例时,会成功生成带有测试用例结果(通过或失败)的报告。但是一次性运行所有测试用例(通过在 package.json 中设置路径),所有测试用例都不会执行并抛出以下错误:

超时超过 100000 毫秒。对于异步测试和 Hook ,确保调用“done()”;如果返回 Promise,请确保它能够解决。

我见过类似的问题,建议在代码中使用异步等待或增加超时来解决此问题,但是为什么当我为特定模块运行时测试用例会执行,而当我为整个项目运行时会抛出上述错误。

我尝试在 package.json 中设置 --timeout 100000 ,它对大量测试用例有帮助,但是在再次运行所有(超过 500 个)单元测试用例时,它会抛出相同的错误。我认为这与测试用例的数量有关。

导致此问题的原因以及如何解决此问题以便所有测试用例都能成功运行。?

编辑如果单元测试中的任何代码导致此超时问题,如何检测哪个测试用例导致此问题,因为似乎无法通过查看命令提示符中的日志来检测问题的根源。任何指示都会有帮助。

最佳答案

经过多次尝试,得出结论,解决了上述问题:

  1. 当我们运行测试用例时,出现依赖项相关的警告然后它会减慢测试用例并给出超时问题。这解决方案是通过模拟操作来消除这些警告,突变、 setter/getter 和 stub 子组件。
  2. 添加 NODE_OPTIONS: 'node --max_old_space_size=16384'配置文件会增加NodeJS内存。这个有所改善单元测试的性能。
  3. 不要使用 beforeEach,而是使用 before 和 after 方法将组件安装在包装中。还可以在 after 方法中使用 destroy按如下方式销毁包装器:

let wrapper;

before(() => {
wrapper = mount('component_name', {
...
})
});

after(() => {
wrapper.destroy();
});

关于node.js - 是什么导致了这个问题: "Timeout of 10000ms exceeded. For async tests and hooks, ensure "done( )"is called;.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56684958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com