Jest + Istanbul: получить покрытие для функций, вызываемых непосредственно только из тестов - PullRequest
0 голосов
/ 14 декабря 2018

Проблема

Есть ли способ настроить Стамбул / 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, похоже, не содержит метаданных о что определенной строкекод есть.Он только сообщает, посещены ли определенные строки / ветви кода или нет.Интересно, есть ли какие-нибудь командные флаги, которые я мог бы использовать, чтобы контролировать, какая информация покрытия передается, и проводить анализ расширенных данных.

...