【问题标题】:How do I get Istanbul to recognize code coverage when using ESM?使用 ESM 时如何让伊斯坦布尔识别代码覆盖率?
【发布时间】:2019-07-10 00:53:42
【问题描述】:

我正在使用 ESM 加载我的模块,并以这种方式使用它们:

// More info on why this is needed see (https://github.com/mochajs/mocha/issues/3006)
async function wire(){
    await import("./Sanity.spec.mjs"); 
    await import("./Other.spec.mjs");
    run();
}
wire();

我使用nyc mocha --delay --exit ./test/suite.js 运行这些测试,但是当我运行伊斯坦布尔时,它似乎无法识别我的导入并且无法提供覆盖率信息...

  3 passing (14ms)

----------|----------|----------|----------|----------|-------------------|
File      |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files |        0 |        0 |        0 |        0 |                   |
----------|----------|----------|----------|----------|-------------------|

如何让伊斯坦布尔识别 ESM 加载代码?

【问题讨论】:

  • 我已经为此苦苦挣扎了一段时间。还没找到解决办法。这可能是一个错误,因为在我的简单库中 nyc + esm 似乎工作正常,直到某个时间点,当我的代码库变得更加复杂时。您可以尝试使用includeexclude 过滤器调整您的命令,之后我得到了非空覆盖,但没有达到所需的状态。我最终将我的代码转换为 CJS 并对其进行覆盖。报告变得更加混乱,但至少我得到了实际信息。希望这对您有所帮助。如果你能找到解决方案,你可以回答你的问题。我也很想调查您的解决方案。

标签: mocha.js istanbul es6-module-loader ecma


【解决方案1】:

从 Mocha v7.1.0(2020 年 2 月)开始提供原生 ESM 支持。

见:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-10
    • 2015-07-02
    • 1970-01-01
    • 2015-08-26
    • 2019-04-28
    • 2015-07-29
    • 2014-05-15
    • 1970-01-01
    相关资源
    最近更新 更多