【问题标题】:What is causing this issue: "Timeout of 10000ms exceeded. For async tests and hooks, ensure "done()" is called;."导致此问题的原因:“超过 10000 毫秒的超时。对于异步测试和挂钩,请确保调用了“done()”;。”
【发布时间】:2019-11-03 05:08:14
【问题描述】:

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

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

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

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

是什么导致了这个问题以及如何解决这个问题,以便所有测试用例都能成功运行。?

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

【问题讨论】:

  • 问题不够具体。不看测试用例是不可能回答这个问题的。见stackoverflow.com/help/how-to-ask。如果测试包含在批量执行时可能导致测试时间变慢的东西(db,无论),那就是问题所在。否则不是。
  • 要验证时间是问题,为什么不试试 --timeout 1000000000 或其他可笑的高点?

标签: node.js unit-testing mocha.js vue-test-utils mocha-webpack


【解决方案1】:

尝试了这么多解决方案,得出结论,解决了上述问题:

  1. 当我们运行测试用例时,有依赖相关的警告 然后它会减慢测试用例并给出超时问题。这 解决方案是通过模拟操作来删除这些警告, 突变、吸气剂和存根子组件。
  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();
});

【讨论】:

    猜你喜欢
    • 2018-07-02
    • 2019-07-24
    • 2015-12-16
    • 1970-01-01
    • 2018-06-07
    • 2019-06-14
    • 2020-10-23
    • 2017-12-25
    • 2019-06-24
    相关资源
    最近更新 更多