Начну с кода:
// karma.config.js
module.exports = function(config) {
config.set({
browsers: ['Chrome'],
frameworks: ['jasmine'],
files: [
'./src/**/*.js',
'./tests/**/*spec.js'
],
reporters: ['progress', 'coverage'],
preprocessors: {
'src/**/*.js': ['coverage']
},
coverageReporter: {
type : 'html',
dir : 'coverage/'
}
});
};
Мой проект из 3 файлов и одного теста:
// ./src/functions.js
function sum (a, b) {
return a + b;
}
function sub (a, b) {
return a - b;
}
function mul (a, b) {
return a * b;
}
function div (a, b) {
return a / b;
}
// ./src/formuls.js
function f1 (a, b, c) {
return c - div(sum(a, b), sub(a, b));
}
function f2 (a, b, c) {
return c + mul(a, b);
}
// ./src/index.js
/*var a = 10;
var b = 6;
var c = 3;
console.log(f1(a, b, c) + f2(a, b, c));
*/
// мои тесты
// ./tests/formuls.spec.js
describe("formuls unit tests", function () {
it("f1", function () {
expect(f1(2, 1, 3)).toBe(0);
});
it("f2", function () {
expect(f2(2, 1, 3)).toBe(5);
});
});
Т.е. тесты написаны только для модуля formuls.js
а для модуля functions.js
их нет. но! Если мы запустим тесты и откроем результат плагина coverage, то увидим, что проект покрыт тестами на 100%. Но это же не так.
Если я правильно понял, этот плагин смотрит какие функции были вызваны. т.е. по сути функции sum
, sub
, mul
, div
были вызваны. Но они были вызваны не для тестирования, а как (не знаю как правильно описать) "вторичные". т.е. функцию которую мы тестируем, вызывает другую функцию, на которую тоже надо написать тесты (но тестов нет).
И если посмотрите на файл index.js
, то он закоменчен. Если его раскомментировать и вообще удалить все тесты, то получается что плагин karma-coverage
опять выдаст 100%
. Потому что все функции были вызваны, но они то были вызваны не в виде тестов, а только потому что index.js
дал старт, и по цепочке пошло все выполняться.
Что делать при такой ситуации?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Получил массив из базы данныхНужно обработать его в javascript
буду признателен за помощь если подскажите, как не добавлять елемент в список если такой уже есть, пытаюсь сделать через массив, что каждый...
Помогите решить вопрос с организацией сторовВ приложении существует множество вложенных объектов, по каждому из которых необходимо отслеживать...
Здравствуйте друзья, есть окно (родительское) и в этом окне есть 3 текстовых поля