当测试用例花费更多时间时,带有摩卡的伊斯坦布尔不会生成覆盖率报告

时间:2018-12-19 10:59:20

标签: node.js unit-testing istanbul

我正在使用mocha测试我的js文件。一些测试用例需要花费一些时间来解决响应,因此我在其中使用了超时。完整的命令看起来像

  

伊斯坦布尔封面_mocha test / sol-verifier.js---timeout 300000

问题是,在进行此类覆盖时,我没有创建覆盖报告,它仅成功运行测试用例并停止(不终止)。我该如何解决?

我的代码在node.js中,它不会创建任何服务器。

当我删除--timeout标志并注释掉需要更多时间的测试用例时,也是如此。它工作正常并生成覆盖率报告。

根据我的发现,问题不在--timeout标志中,当测试用例需要比平时更长的时间来解决时,不会生成报告。

1 个答案:

答案 0 :(得分:2)

您可以在测试套件函数中添加done参数,并在每个测试函数的末尾调用done()

it('test expectation', function(done) {
    // test asynchronous code
    // call done() to terminate test and proceed to the next test
    done();
}

或者,尝试在--exit上使用mocha标志运行测试:

istanbul cover _mocha --exit test/sol-verifier.js -- --timeout 300000

根据docs

  

为了避免误报并鼓励更好的测试实践,Mocha在认为应该完成运行时将不再通过process.exit()automatically kill itself

     

如果在您的测试似乎“完成”之后,mocha进程仍然存在,则表明您的测试已安排了一些事情(异步),并且没有对自己进行适当的清理。你没有打开插座吗?

     

提供--exit标志以使用v4之前的行为。