使用ESM时,如何使Istanbul识别代码覆盖率?

10

我正在使用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运行这些测试,但是当我运行 Istanbul 时,它似乎无法识别我的导入并且无法提供覆盖信息...

  3 passing (14ms)

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

我该如何让Istanbul识别已加载的ESM代码?


我已经苦苦挣扎了一段时间,但仍未找到解决方案。这可能是一个 bug,因为在我的简单库中,nyc + esm 在某个时间点之前似乎运行良好,但当我的代码库变得更加复杂时出现了问题。你可以尝试使用 includeexclude 过滤器来调整命令,我在那之后得到了非空覆盖率,但并没有达到期望的状态。最终,我将我的代码转换为 CJS 并在其上运行覆盖率。报告变得混乱了,但至少我得到了实际信息。希望这能对你有所帮助。如果你找到了解决方案,可以回答你的问题。我也很愿意研究你的解决方案。 - Strider
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接