Проблема
Есть ли способ настроить Стамбул / Jest для сбора отдельной метрики покрытия кода?
Метрика должна подсчитывать посещенные строки / ветви кода, но только когда линиявыполняется как часть прямого вызова содержащей функции.
Мотивация
Я хочу посмотреть, насколько хорошо функции тестируются изолированно (в истинном смысле модульного тестирования).
Пример
В приведенном ниже коде мне интересно видеть показатель, который подсчитывает каждую строку функции foo()
как посещенную один раз (поскольку она вызывается непосредственно из теста);однако каждая строка bar()
не должна учитываться, поскольку она не вызывается тестом напрямую, а вызывается транзитивно.
.
// test.js
it(`should count things well`, () => {
expect(foo()).toEqual(3);
});
// code.js
| function foo() {
1 | const a = 1;
1 | const b = bar();
1 | return a + b;
| }
| function bar() {
0 | return 2;
| }
То, что я пробовал
Сгенерированный в Стамбуле coverage-final.json
, похоже, не содержит метаданных о что определенной строкекод есть.Он только сообщает, посещены ли определенные строки / ветви кода или нет.Интересно, есть ли какие-нибудь командные флаги, которые я мог бы использовать, чтобы контролировать, какая информация покрытия передается, и проводить анализ расширенных данных.