【问题标题】:istanbul with mocha not generating coverage report when a testcase takes more time当测试用例需要更多时间时,伊斯坦布尔与 mocha 不生成覆盖率报告
【发布时间】:2019-05-19 20:41:15
【问题描述】:

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

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

问题是,在进行这样的覆盖时,我没有创建覆盖报告,它只会成功运行测试用例并停止(而不是终止)。我该如何解决这个问题?

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

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

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

【问题讨论】:

    标签: node.js unit-testing istanbul


    【解决方案1】:

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

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

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

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

    根据docs

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

    如果在您的测试看起来“完成”之后 mocha 进程仍然存在,那么您的测试已经安排了一些事情发生(异步)并且没有正确清理自己。你有没有打开一个套接字?

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

    【讨论】:

      猜你喜欢
      • 2020-06-27
      • 2015-08-26
      • 2018-12-21
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      • 2013-12-21
      • 2016-08-31
      • 2014-01-27
      相关资源
      最近更新 更多