karma-runner - Karma 代码覆盖率 - 总是 100%?

标签 karma-runner karma-jasmine karma-coverage gulp-karma

早上好,

我有一个似乎无法解决的奇怪问题。我写出了我的 Karma 测试并正确执行,但是当我尝试连接 Karma 的代码覆盖率时,无论如何它只会 100% 吐出。

我查看了这里提出的其他问题,但似乎都没有解决我的问题。任何帮助将不胜感激。

使用:

"karma": "~0.12.37",
"karma-babel-preprocessor": "^5.2.1",
"karma-browserify": "^4.2.1",
"karma-coverage": "^0.4.2",
"karma-jasmine": "~0.3.5",
"karma-phantomjs-launcher": "^0.2.0",

这是我的 karma.conf.js
module.exports = function (config) {
  config.set({
    basePath: '',

    frameworks: ['browserify', 'jasmine'],

    files: [
        'bower_components/jquery/dist/jquery.js',
        'bower_components/angular/angular.js',
        'bower_components/angular-animate/angular-animate.js',
        'bower_components/angular-cookies/angular-cookies.js',
        'bower_components/angular-mocks/angular-mocks.js',
        'bower_components/angular-resource/angular-resource.js',
        'bower_components/angular-sanitize/angular-sanitize.js',
        'bower_components/angular-touch/angular-touch.js',
        'bower_components/angular-ui-router/release/angular-ui-router.js'
        'src/*.html',
        'src/**/*.html',
        'src/app/index.js',
        'src/app/**/*.js'
    ],

    exclude: [],

    preprocessors: {
        'src/app/index.js': ['browserify', 'coverage'],
        'src/app/**/*.js': ['browserify', 'coverage']
    },

    browserify: {
        debug: true,
        transform: ['babelify', 'stringify']
    },

    reporters: ['progress', 'coverage'],

    port: 9876,

    colors: true,

    autoWatch: true,

    browsers: ['PhantomJS'],

    singleRun: false
  });
};

我的文件结构是:
src
  app
    login
      login.controller.js
      login.controller.spec.js
      login.html
    index.js
karma.conf.js

谢谢!

最佳答案

您是否尝试过使用 browserify-istanbul 转换?

module.exports = function(config) {
    config.set({
         // ...
         browserify: {
             transform: ['browserify-istanbul', ...]
         }
    });
};

您需要“检测”您的代码以收集覆盖率指标。所以你应该告诉browserify在返回模块前应用检测 require .

关于karma-runner - Karma 代码覆盖率 - 总是 100%?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31137351/

相关文章:

angularjs - browser() 对象在哪里定义在 angularJS 中?

javascript - 在 Jasmine JS 测试中未触发 AngularJS Promise 回调

javascript - 如何测试 Controller 中将值传递给服务 setter 的 setter 函数

angular - 单击事件发生时如何对下拉菜单进行单元测试

mocha.js - 将 karma-coverage 中的 Istanbul 尔测试覆盖率与其他来源的覆盖率合并

angularjs - 在 AngularJS 中测试 : How do I test the backend response of my API's?

angular - NullInjectorError : No provider for InjectionToken MatDialogData

javascript - 如何将 cucumber 报告添加到 Cypress

javascript - 如何检查 Istanbul 尔单个文件的覆盖范围?

angular - 预期 1 个匹配请求,发现 2 个请求。我如何测试 2 个请求