Покрытие функций Стамбулом и Мокко / Чай

У меня возникли проблемы с пониманием того, как выполнять модульное тестирование функций, чтобы Стамбул считал их покрытыми.

В качестве очень простого примера я создал этот математический модуль:

var add = function( one, two ){
    return one + two;
}

module.exports = {
    add: add
};

и базовое модульное тестирование:

var chai = require('chai');
var expect = chai.expect;

describe('add() method', function(){
    it('should do math', function(){
        expect( some.add(1, 1) ).to.equal(2);
    });
});

Отчет, подготовленный istanbul, дает мне следующие результаты:

  • Заявления: 66,67% (2/3)
  • Филиалы: 100% (0/0)
  • Функции: 0% (0/1)
  • Линии: 66,67% (2/3)
  • Игнорируется: нет

введите описание изображения здесь

Если простое тестирование результата вызова функции не считается охватом, как вы должны тестировать этот код, когда он находится в области действия функции, к которой ваши модульные тесты не могут получить доступ?


person twiz    schedule 18.03.2014    source источник


Ответы (1)


Как и все самые тяжелые проблемы, это было вызвано чем-то глупым и не связанным.

Я запускал istanbul через grunt и использовал обходной путь env, поэтому при проверке покрытия использовался правильный каталог. Примерно так:

env: {
    coverage: {
        APP_DIR_FOR_CODE_COVERAGE: '../test/coverage/instrument/app/'
    }
},

Как показано в документации grunt-istanbul

Проблема заключалась в том, что я забыл включить env:coverage в задачу, которую я создал для запуска тестов покрытия.

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

person twiz    schedule 18.03.2014