Webpack工具包-instrumenter-loader不加载所有源文件

dced5bon  于 8个月前  发布在  Webpack
关注(0)|答案(1)|浏览(56)

我有一个很大的项目,但目前在它的测试很少。覆盖率惊人地高。覆盖率高的原因是因为覆盖率仅针对具有测试的文件报告!!
我的覆盖率实际上随着我添加更多的测试而下降。当我添加一个新的测试文件时,它会拉入更多的源代码,语句/分支/函数/行的总数会增加。
在覆盖率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$/
}

我试过把include语句修改成一个glob或者一个正则表达式,但是没有任何改进。
为了确认我的tsconfig.spec.json文件包含了我想要覆盖的所有源代码,我故意在其中一个没有包含在覆盖报告中的文件上造成了编译错误,并确认这个错误出现在测试编译中。

li9yvcax

li9yvcax1#

你需要配置nyc通过nycrc文件加载所有文件。具体来说,您需要设置all: true。这在这里的文档中讨论

相关问题