【问题标题】:Karma coverage with files and tests in same locationKarma 覆盖同一位置的文件和测试
【发布时间】:2015-02-11 08:01:51
【问题描述】:

我正在现有项目中设置业力。我让它正常工作并运行测试,但我似乎无法让覆盖工作。

我已经安装了所有必要的模块,但我认为这与我如何将我的文件包含在“预处理器”对象中有关。

我的项目是用下面的文件结构设置的

App
|--js
  |-- fileToTest.js
  |-- fileToTest.Tests.js

在业力覆盖率文档中,它说在设置覆盖率时不包括测试或库。我想我想知道如何排除最后带有“.Tests.js”的文件。

我的预处理器对象如下所示。有没有办法包含我想要生成覆盖以使用 glob 的文件,或者不幸的是我必须单独添加这些文件?

preprocessors: {
    './App/**/*.tpl.html' : 'ng-html2js',
    './App/**/*.js': ['coverage']
}

【问题讨论】:

    标签: javascript karma-runner karma-jasmine


    【解决方案1】:

    Karma 使用 https://github.com/isaacs/minimatch 来查找文件(这里提到了 http://karma-runner.github.io/0.12/config/preprocessors.html),因此您可以使用 glob。

    在我们的项目中,我们只是从各个文件夹中添加我们的代码,这还不错:

    preprocessors: {
              // source files, that you wanna generate coverage for
              // do not include tests or libraries
              // (these files will be instrumented by Istanbul)
              'www/js/controllers/**/*.js': ['coverage'],
              'www/js/directives/**/*.js': ['coverage'],
              'www/js/filters/**/*.js': ['coverage'],
              'www/js/initializers/**/*.js': ['coverage'],
              'www/js/services/**/*.js': ['coverage'],
              'www/js/services.js': ['coverage']
        }
    

    编辑:

    参考这个https://github.com/karma-runner/karma/issues/508

    看来这个语法是有效的

    resources/javascript/**/!(*Spec).js
    

    申请你会是

    './App/**/!(*Tests).js': ['coverage']
    

    【讨论】:

    • 我认为这行不通。考虑到我的示例,您上面的 glob 模式将匹配测试文件和实际文件,其中不应包含测试文件
    • 我会试一试的。谢谢!
    猜你喜欢
    • 2014-09-16
    • 2019-01-18
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    相关资源
    最近更新 更多