Добавьте контроллеры angular в препроцессор покрытия кода karma-coverage (Istanbul)

Вот как устроен мой проект:

project/
  assets/
    js/
      app.js
      services.js
      directives.js
      controllers/
        FooCtrl.js
        BarCtrl.js
    css/
    images/
  test/
    unit/
      controllers/
        controllerSpec.js

Я изо всех сил пытаюсь добавить все файлы под js/ в директиву preProcessor karma-coverage.

Делая это

preprocessors: {
  '**/assets/js/*.js': ['coverage'],
},

генерирует отчет о покрытии только для файлов непосредственно под assets/js/, но не для файлов под assets/js/controllers/.

Указание одного контроллера:

preprocessors: {
   '**/assets/js/controllers/FooCtrl.js': ['coverage'],
},

просто говорит "Нет данных для отображения".

Наконец, просто делаем подстановочный знак:

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

отображает данные для всех файлов непосредственно под assets/js/, test/unit/controllers/ test/lib/ и т. д., но по-прежнему отказывается показывать какие-либо данные о покрытии для assets/js/controllers/.


person xbonez    schedule 11.12.2013    source источник


Ответы (1)


Клянусь, в StackOverflow есть что-то волшебное. Я потратил час, чтобы заставить его работать, сдался, опубликовал этот вопрос и через 2 минуты понял это.

Я совершил ошибку, переместив файлы из массива files в директиву preprocessors. Чтобы получить покрытие кода для определенного файла, он должен быть в обоих местах: в массиве files и в массиве preprocessors.

Моя окончательная рабочая конфигурация выглядит так:

files : [
  //3rd Party Code
  'bower_components/angular/angular.js',
  'bower_components/angular-route/angular-route.js',
  'bower_components/angularjs-scope.safeapply/src/Scope.SafeApply.js',

  //App-specific Code
  'assets/js/app.js',
  'assets/js/services.js',
  'assets/js/directives.js',
  'assets/js/resources.js',
  'assets/js/controllers/*.js',

  //Test-Specific Code
  'node_modules/chai/chai.js',
  'test/lib/chai-should.js',
  'test/lib/chai-expect.js'
],

preprocessors: {
  '**/assets/js/*.js': ['coverage'],
  '**/assets/js/controllers/*.js': ['coverage']
},
person xbonez    schedule 11.12.2013