Webpack istanbul-instrumenter-loader 未加载所有源文件

问题描述 投票:0回答:1

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

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

在覆盖率 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
文件包含我想要覆盖的所有源,因为我故意对未包含在覆盖率报告中的文件之一造成编译错误,并确认此错误出现在测试编译中。

typescript webpack code-coverage istanbul
1个回答
0
投票

您需要配置 nyc 以通过 nycrc 文件加载所有文件。具体来说,您需要设置

all: true
。这在文档中进行了讨论here

© www.soinside.com 2019 - 2024. All rights reserved.