2015-06-30 3 views
13

Доброе утро,Karma Code Coverage - Всегда 100%?

У меня возникла странная проблема, которую я не могу решить. У меня есть тесты на 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 

Спасибо!

+2

Вызывается с использованием как препроцессоров 'karma-browserify', так и' karma-coverage'. Взгляните на http://stackoverflow.com/a/28237582/2943490 для рабочей конфигурации, которая использует браузеру и istanbul (что касается использования кармы). – user2943490

ответ

1

Вы пытались использовать browserify-istanbul transform?

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

Вам необходимо «измерить» свой код для сбора показателей покрытия. Поэтому вы должны сообщить browserify, чтобы применить прибор перед возвратом модуля с require.