[email protected] collectCoverage из-за того, что файлы не выбираются вне корневого каталога

Когда я запускаю покрытие кода, код внутри корневого каталога, содержащий конфигурацию jest, работает отлично, но для кода вне корневого каталога тестовые случаи проходят, но в отчете о покрытии он показывает нулевой процент для всех тестовых файлов вне корневого каталога.

Файл jest.config.js находится внутри папки explorebook.

структура каталогов:

|---core
|   |--components
|      |--test
|   |--jest.setup.suites.js
|---explorebook
|    |--components
|    |  |--test
|    |--package.json
|    |--jest.config.js
|    |--jest.setup.suites.js
|---framework    
|     |--commons
|        |--test
|     |--jest.setup.suites.js 
|

jest.config.js

const TEST_FILES_REGEX = '(/test/.*|(\\.|/)(test|spec))\\.js$';

module.exports = {
    verbose: false,
    roots: [
        '<rootDir>/',
        '<rootDir>/../core/',
        '<rootDir>/../framework/commons/'
    ],
    collectCoverage: true,
    collectCoverageFrom: [
         'components/**/*.js',
         '<rootDir>/../core/components/**/*.js'
         '<rootDir>/../framework/commons/*.js'
    ],
    coverageDirectory: 'reports/coverage',
    coverageReporters: [
        'lcov',
        'text'
    ],
   setupFiles: [ '<rootDir>/jest.setup.suites.js', 
          '<rootDir>/../core/jest.setup.suites.js', 
          '<rootDir>/../framework/jest.setup.suites.js' ],
   setupTestFrameworkScriptFile: path.join(__dirname, 'jest.setup.tests.js'),
   testEnvironment: 'jsdom',
   testRegex: TEST_FILES_REGEX

};

отчет о покрытии

Даже если все, что находится за пределами rootDir, проходит, отчет этого не показывает.

Я ожидаю, что значения покрытия для внешних файлов также будут правильными в отчете.


person amitraushan    schedule 17.05.2019    source источник
comment
Вы когда-нибудь это решали?   -  person Clint    schedule 26.11.2019


Ответы (1)


Jest будет модифицировать покрытие кода только для файлов внутри rootDir проекта (источник). В вашей настройке это будет папка explorebook.

Чтобы также выполнить покрытие для файлов в папке, отличной от папки, содержащей jest.config.js, я предлагаю установить [rootDir] (источник) в корневую папку проекта и обновите все необходимые пути: jest.config.js

const TEST_FILES_REGEX = '(/test/.*|(\\.|/)(test|spec))\\.js$';

module.exports = {
    verbose: false,
    rootDir: './../' // This should point to your project root folder
    collectCoverage: true,
    collectCoverageFrom: [
         '**/*.js',
    ],
    coverageDirectory: '<rootDir>/explorebook/reports/coverage',
    coverageReporters: [
        'lcov',
        'text'
    ],
   setupFiles: [ '<rootDir>/explorebook/jest.setup.suites.js', 
          '<rootDir>/core/jest.setup.suites.js', 
          '<rootDir>/framework/jest.setup.suites.js' ],
   setupTestFrameworkScriptFile: path.join(__dirname, 'jest.setup.tests.js'),
   testEnvironment: 'jsdom',
   testRegex: TEST_FILES_REGEX

};
person Alex Stoicuta    schedule 13.01.2020
comment
Почему другие ответы не могут быть столь же ясными и прямыми, как этот? Потратил часы на эту проблему только для того, чтобы понять, что у меня неправильный путь в --collectCoverageFrom, то есть я проверял свои тестовые файлы на предмет покрытия ???? ... ой. Спасибо тебе за это! - person lbragile; 04.03.2021