Начиная с Jest 25 отчеты о покрытии имеют другой путь к источнику - PullRequest
0 голосов
/ 20 февраля 2020

Я запускаю проект Angular с настройкой @ nrwl / nx и Jest для модульных тестов. Я настроил Jest для генерации файлов lcov для каждого приложения и библиотеки, которые затем выбираются сканером SonarQube для отчета о тестовом покрытии. Каждая библиотека - это собственный модуль Sonar.

Недавно я обновил свою версию Jest с 24.1.0 до 25.1.0. С тех пор мой охват в SonarQube всегда равен 0%, потому что сканер не может найти файлы:

WARN: Could not resolve 1 file paths in [/mnt/c/Users/Patrick/Projects/projectname/apps/projectname/../../coverage/apps/projectname/lcov.info], first unresolved path: apps/projectname/src/environments/environment.ts 

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

Jest 25.1 (не работает)

SF:apps/projectname/src/environments/environment.ts

Jest 24.1 (работает)

SF:/mnt/c/Users/Patrick/Projects/projectname/apps/projectname/src/environments/environment.ts

Когда я изменяю его вручную на следующее, это также работает:

SF:src/environments/environment.ts

Но теперь я немного застрял, потому что я не нашел способа сказать Джесту, что нужно сгенерировать путь старым путем, или сказать Сонару, что этот путь теперь другой.

Ответы [ 2 ]

1 голос
/ 23 февраля 2020

У меня была точно такая же проблема! Я решил это, выполнив сценарий после выполнения теста, который изменит lcov.info путем преобразования относительных путей в абсолютные (process.cwd ()). Теперь CC в SonarQube снова отображается:)

const project = `name-of-your-project`;
const file = `./${project}/jest/coverage/lcov.info`;

fs.readFile(file, 'utf8', function (err,data) {
  if (err) {
    return console.error(err);
  }
  const result = data.replace(/src/g, `${process.cwd()}/${project}/src`);

  fs.writeFile(file, result, 'utf8', function (err) {
    if (err) return console.error(err);
  });
});
0 голосов
/ 01 мая 2020

Я решаю это, перемещая конфигурацию "coverReporters" из "jest.config. js" в папке root в "jest.config.ts" в папке проекта, и в конфигурации lcov я установил:

coverageReporters: ['html', ["lcovonly", {"projectRoot": __dirname}], 'text-summary'],

установив для проекта Root значение __dirname, снова сделать путь "SF" относительным.

...