2013-09-28 3 views
2

Я настроил свой karma.conf.js с включенной предварительной обработкой, чтобы получить отчет о покрытии кода моих тестов. Я добавил эту строку в препроцессоры .Неверный отчет о покрытии в карме

preprocessors: { 
    'public/js/app.js': ['coverage'], 
    'public/js/filters.js': ['coverage'], 
    'public/js/directives.js': ['coverage'], 
    'public/js/services/*.js': ['coverage'], 
    'public/js/controllers/*.js': ['coverage'], 
}, 

Что я получаю, это отчет, который является абсолютно неправильным. Я знаю, что я написал тесты для каждого модуля и функции внутри. Но отчет о покрытии показывает мне только тесты на услуги правильно.

Например, тесты для директив. Я знаю, что я написал несколько тестов, и тесты также будут выполнены. Но в отчете показано, что я тестировал только 36% моих кодовых строк.

Coverage Report

Что может быть причиной такого странного поведения?

Update:

Я вижу этот выход из спецификации репортера:

Directives: 
     bsTooltip: 
      when the element was created: 
       PASSED - should call the popup function 
     bsSwitchtext: 
      when the model isBusy changes to true: 
       PASSED - should call the button method with loading 
      when the model isBusy changes to false changes: 
       PASSED - should call the button method with loading 

Так что я думаю, что мой тест все будет выполнен.

ответ

0

Попробуйте добавить console.log('testing123'); в одну из точек, которая отображается как незакрытая. Если он появляется, когда вы запускаете тесты, вы знаете, что с Стамбулом что-то не так.

Однако я предполагаю, что с вашей конфигурацией что-то не так, и эти тесты не выполняются ни в одном, ни в тестах не выполняется код, как вы думаете.

+0

Я проверить его, прежде чем я отправил это здесь. Все мои тесты будут выполнены из кармы, и я думаю, что все тесты правильные и проверьте это, что я думаю, что он должен тестировать. –

0

Попробуйте изменить то, что вы имеете в препроцессорах:

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

Я не был в состоянии доклада работать, если я не следовал определенному синтаксису с **/Перед директорами в препроцессорах объекта.

The karma-coverage documentation включает в себя предыдущие каталоги **/before, перечисленные в препроцессорах.

на основе this SO answer.

Смежные вопросы