javascript - Jest-dekning i et Node TypeScript-prosjekt returnerer alltid tom
Jeg jobber med et backend Typescript-prosjekt hvor jeg prøver å få en rapport over testdekning for enhetstester. Jest returnerer en tom dekningsrapport både i terminalen og i HTML-rapporten, og sier ingenting. Jeg har også prøvd med -- --coverage --watchAll=false, men det gir også et tomt dokument.
package.json
"scripts":{
"unit-test": "jest --config='./config/jest/jest_unit.config.js' --forceExit --detectOpenHandles",
}
jest_unit.config.js
/**
* @file Jest Unit Test Configuration File
*/
module.exports = {
roots: ['../../tests'],
testRegex: '.*_unit.test.(js|ts|tsx)?$',
globals: {
'ts-jest': {
tsConfig: 'tsconfig.json',
},
},
moduleFileExtensions: ['ts', 'js'],
transform: {
'^.+\\.(ts|tsx)$': 'ts-jest',
},
testEnvironment: 'node',
reporters: [
'default',
[
'../../node_modules/jest-html-reporter',
{
pageTitle: 'Unit Test Report',
outputPath: 'tests/reports/unit-test-report.html',
includeFailureMsg: true,
},
],
],
collectCoverage: true,
collectCoverageFrom: [
'../../api/**/*.ts'
],
moduleFileExtensions: ["ts", "js", "json"],
coverageDirectory: "../../coverage",
coveragePathIgnorePatterns: [
"<rootDir>/node_modules"
],
coverageReporters: [
"json",
"lcov",
"text"
],
coverageThreshold: {
"global": {
"branches": 100,
"functions": 100,
"lines": 100,
"statements": 100
}
},
};
Mappestruktur
|-- app
|-- controllers
|-- schemas
|-- config
|-- jest
|-- jest_unit.config.js
|-- package.json
|-- tests
|-- api
|-- modules
|-- m1
|-- controllers
|-- m1_controller_unit.test.ts
|-- m1_controller_integration.test.ts
|-- m2
|-- models
|-- m1_model_unit.test.ts
|-- m1_model_integration.test.ts
|-- m3
|-- schemas
|-- m1_schema_unit.test.ts
|-- m1_schema_integration.test.ts
Jest-dekning htm og terminal viser ingen dekningslinjer
Svar #1
Jeg klarte å fikse dette problemet ved å flytte konfigurasjonsfilen til rotmappen. Alt er bra her i denne konfigurasjonen. Jeg vet ikke hvorfor Jest oppfører seg slik.
Oppdatert struktur
Mappestruktur
|-- app
|-- controllers
|-- schemas
|-- jest_unit.config.js
|-- package.json
|-- tests
|-- api
|-- modules
|-- m1
|-- controllers
|-- m1_controller_unit.test.ts
|-- m1_controller_integration.test.ts
|-- m2
|-- models
|-- m1_model_unit.test.ts
|-- m1_model_integration.test.ts
|-- m3
|-- schemas
|-- m1_schema_unit.test.ts
|-- m1_schema_integration.test.ts
package.json
"scripts":{
"unit-test": "jest --config='./jest_unit.config.js' --forceExit --detectOpenHandles",
}
Svar #2
Prøv å endre din collectCoverageFrom som følger:
collectCoverageFrom: [
'../../tests/**'
],
Koden ** betyr å inkludere alle filer, rekursivt. Detaljer finnes på https://jestjs.io/docs/en/configuration#collectcoveragefrom-array
