【问题标题】:Excluding files from coverage when using Karma and Istanbul使用 Karma 和 Istanbul 时从覆盖范围中排除文件
【发布时间】:2014-04-26 10:41:51
【问题描述】:

我正在使用 Karma 测试我的 JavaScript 并获取覆盖率报告。我正在使用默认的伊斯坦布尔覆盖率报告。这是我的预处理器参数:

    preprocessors: {
        'framework/**/*.js':'coverage',            
        'framework/*.js':'coverage',
        '!framework/node/**/*.js':'coverage',         
        '!framework/test/**/*.js':'coverage',                                 
        'framework-lib/**/*.js':'coverage',
        '!framework-lib/tool-data-api/tool-data-api.js':'coverage'
    }

如您所见,我正在尝试使用“!”作为否定命令,通常与 Node.js 一起使用。但是,它在这里不起作用,并且我的任何目录都没有被排除在外。

有什么方法可以做我想要完成的事情吗?

【问题讨论】:

  • 只是不要写你不想被覆盖的模式/文件。或者如果您需要对它们进行预处理,只是不要将coverage 写为列表中的预处理器(对于每个文件,您可以指定一个字符串或字符串列表)。
  • 如果您想使用! 排除路径,它将不起作用:请参阅此问题:github.com/karma-runner/karma/issues/440

标签: javascript node.js karma-runner istanbul minmatch


【解决方案1】:

根据https://karma-runner.github.io/0.12/config/configuration-file.html

**/*.js:所有子目录中带有“js”扩展名的所有文件
**/!(jquery).js:与之前相同,但不包括“jquery.js”
**/(foo|bar).js:在所有子目录中,所有“foo.js”或“bar.js”文件

因此,基于此,我尝试了以下方法:

preprocessors: {
    'framework/**/!(node|test)/*.js': 'coverage',
    'framework-lib/**/!(tool-data-api).js': 'coverage'
}

这似乎已经完成了您正在寻找的东西。

作为对其他来这里寻找如何定位除 .spec.js 文件之外的所有文件的人的说明,请尝试:

'**/!(*spec).js'

这似乎对我有用。

【讨论】:

    【解决方案2】:

    在 Karma 中使用 minimatch.js 库来存储数学文件。 所以你需要重写你的规则。 例如,要排除它应该具有的文件夹节点节点

    preprocessors: {
            'framework/*[!node]/*.js':'coverage',            
        }
    

    【讨论】:

    • minimatch.js 使用 extglob 语法,这是迄今为止我见过的最奇怪的野兽:mywiki.wooledge.org/glob#extglob
    • 如何忽略任何 node_modules 文件夹?
    【解决方案3】:

    我不确定您是否正在运行“istanbul cover ...”来运行覆盖率报告,但如果是,您可以使用 -x 标志来排除文件/模式。输入“istanbul help cover”将显示包括此在内的用法。

     -x <exclude-pattern> [-x <exclude-pattern>]
                  one or more fileset patterns e.g. "**/vendor/**"
    

    【讨论】:

      【解决方案4】:

      确保您要排除的目录/文件没有被任何其他包含加载。例如,'framework//.js':'coverage' 将加载您试图在 '!framework/node//.js':'coverage 中排除的文件'

      【讨论】:

      • 那么,除了*spec.js 文件之外,您如何从目录中获取所有文件?
      猜你喜欢
      • 2015-07-31
      • 1970-01-01
      • 2018-12-04
      • 2021-12-29
      • 2016-05-23
      • 2016-02-29
      • 2022-10-21
      • 2021-02-13
      相关资源
      最近更新 更多