Кодовое покрытие маршрутов составляет 100 % без каких-либо тестов

Я пишу тесты для простого проекта AngularJS и использую Istanbul для определения покрытия кода. У меня есть файл со 100% покрытием кода согласно Стамбулу, но у меня нет для него теста:

'use strict';

define(['app'],function(app) {
  app.config(['$routeProvider',function ($routeProvider) {
    $routeProvider
      .when('/', {
      templateUrl: 'views/main.html',
        controller: 'MainController'
      })
      .otherwise({
        redirectTo: '/'
      });
  }]);
});

Статистика из Стамбула:

Statements: 100% (4 / 4)      
Branches: 100% (0 / 0)      
Functions: 100% (2 / 2)      
Lines: 100% (4 / 4)     

и вся страница HTML-отчета окрашена в зеленый цвет, что свидетельствует о хорошем покрытии кода.

С чего бы это? Что с этим можно сделать? (Это проблема в Стамбуле?)


person Michal Charemza    schedule 18.06.2013    source источник
comment
[OT]: Довольно неудобный вопрос, учитывая, что прямо сейчас есть проблема в Стамбуле...   -  person icedwater    schedule 18.06.2013


Ответы (1)


Покрытие кода показывает, только если выполнение JavaScript достигло этих строк, а не есть ли какие-либо специально назначенные ему тесты.

Скорее всего, Angular нормально читает конфигурацию маршрута во время выполнения тестов, поэтому все в файле помечено как покрытое.

Это также хорошее напоминание о том, что 100-процентное покрытие кода не означает автоматически 100-процентное покрытие функций.

person JJJ    schedule 29.06.2013
comment
Возможно, вы захотите выделить последнюю часть жирным шрифтом... Невозможно сказать достаточное количество раз. - person holographic-principle; 29.06.2013
comment
но отсутствие 100% означает, что у вас есть код, который не тестировался, и если вы измеряете непрерывно, снижение охвата тестами указывает на то, что функции были реализованы без добавления тестов. - person Tobias Langner; 29.06.2013
comment
@TobiasLangner Да, это, безусловно, верно, но обратное неверно: если у вас есть 50% покрытие кода, вы не можете иметь 100% покрытие функций (если у вас нет большого количества избыточного кода); если у вас есть 100% покрытие кода, вполне возможно, что у вас есть только 50% покрытие функций. - person JJJ; 29.06.2013