导致此问题的原因是:“超过了10000ms的超时。对于异步测试和挂钩,请确保调用了“ done()”;”。

时间:2019-06-20 11:26:40

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

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

超时超过100000ms。对于异步测试和挂钩,请确保调用了“ done()”;如果返回承诺,请确保其解决。

我已经看到类似的问题,这些问题建议在代码中使用异步等待或增加超时来解决此问题,但是为什么我在为特定模块运行时会执行测试用例,而在为整个项目运行时会引发错误? / p>

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

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

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

1 个答案:

答案 0 :(得分: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();
});