首页 > 解决方案 > Webpack istanbul-instrumenter-loader 不加载所有源文件

问题描述

我有一个很大的项目,但目前只有很少的测试。覆盖率高得惊人。覆盖率高的原因是因为覆盖率只报告有测试的文件!

随着我添加更多测试,我的覆盖率实际上下降了。当我添加一个新的测试文件时,它会引入更多的源,并且语句/分支/函数/行总数会增加。

在覆盖率 html 报告中,根本没有列出大量的类。

即使我的测试没有引用它们,我如何在我的覆盖率报告中包含所有源文件?

我花了一些时间研究这个,但我不明白为什么他们没有被报道。

(不幸的是,我无法从我的工作计算机访问 SO,因此我无法直接在此处复制/粘贴任何内容 - 我必须输入示例)

对此感兴趣的主要配置区域似乎是仪器加载器。我的理解是istanbul-instrumenter-loader向我的 javascript(从 Typescript 转译)添加了额外的代码。然后运行测试并捕获覆盖信息。报告者然后coverage-istanbul报告捕获的数据。

我的装载机配置:

{
    test: /\.ts$/,
    use: {
        loader: "istanbul-instrumenter-loader",
        options: {
            esModules: true,
            produceSourceMap: true
        }
    },
    enforce: "post",
    include: path.resolve("main"), // main is my src folder
    exclude: /.spec.ts$/
}

我已经尝试通过将其更改为 glob 或正则表达式来弄乱这里的 include 语句,但我没有尝试改善这种情况。

只是为了确认我的tsconfig.spec.json文件包含我想要覆盖的所有源,因为我故意在覆盖报告中未包含的文件之一上导致编译错误,并确认此错误出现在测试编译中。

标签: typescriptwebpackcode-coverageistanbul

解决方案


推荐阅读