Wie kann ich ein Dateimuster für die Jest-Codeabdeckung ignorieren?

Lesezeit: 2 Minuten

Benutzeravatar von Bas van Dijk
Bas van Dijk

In meinem von Jest getesteten Projekt habe ich *.entity.ts Dateien. Ich möchte nicht, dass diese Dateien in meinen Abdeckungstest einbezogen werden.

Laut der Dokumentation unter https://facebook.github.io/jest/docs/en/configuration.html#coveragepathignorepatterns-array-string da ist ein coveragePathIgnorePatterns Einstellung, die Sie im verwenden können package.json

Ich habe Regex- und Dateimuster ausprobiert, aber keines davon ignoriert einfach das *.entity.ts Dateien im Abschlussbericht.

Wenn ich zum Beispiel hinzufüge "coveragePathIgnorePatterns": ["common"] Meine Tests laufen nicht einmal mehr.

Irgendwelche Gedanken darüber, wie ich Jest dazu bringen kann, das zu überspringen *.entity.ts in den Abdeckungstests?

Mein Jest-Abschnitt in package.json sieht folgendermaßen aus:

{
    "moduleFileExtensions": [
        "js",
        "json",
        "ts"
    ],
    "rootDir": "src",
    "testRegex": ".spec.ts$",
    "transform": {
        "^.+\\.(t|j)s$": "ts-jest"
    },
    "coverageDirectory": "../coverage"
}

Ich verwende eine externe JSON-Datei, um meine Jest-Konfiguration zu speichern und sie von meinem aus auszuführen package.json mit npm: jest --config jest.config.json --no-cache

jest.config.json

{
    "collectCoverage": true,
    "collectCoverageFrom": [
        "src/**/*.ts"
    ],
    "coveragePathIgnorePatterns": [
        "node_modules",
        "test-config",
        "interfaces",
        "jestGlobalMocks.ts",
        ".module.ts",
        "<rootDir>/src/app/main.ts",
        ".mock.ts"
    ],
    "coverageDirectory": "<rootDir>/coverage/",
    "coverageThreshold": {
        "global": {
            "branches": 20,
            "functions": 30,
            "lines": 50,
            "statements": 50
        }
    },
    "mapCoverage": true,
    "preset": "jest-preset-angular",
    "setupTestFrameworkScriptFile": "<rootDir>/src/setupJest.ts",

    "transformIgnorePatterns": [
        "<rootDir>/node_modules/(?!@ionic-native|@ionic|@ngrx|angular2-ui-switch|angularfire2|jest-cli)"
    ],
    "verbose": false
}

Meine Abdeckung umfasst nicht die in „coveragePathIgnorePatterns“ aufgeführten Dateien. Möglicherweise ist die Quellzeile „/src/app/main.ts“ der Eintrag, den Sie benötigen.

  • Einfache Erinnerung: Pfadmuster sind reguläre Ausdrücke

    – Sebastien H.

    22. Juli 2021 um 8:56 Uhr

  • coveragePathIgnorePatterns war die Antwort, nach der ich gesucht habe. Hochgestimmt.

    – danivicario

    30. Juni 2022 um 15:51

Benutzeravatar von Gourab Paul
Gourab Paul

Sie können ein hinzufügen! Markieren Sie es im Parameter „collectCoverageFrom“, um es von der Zählung auszuschließen. Hier jede Datei in einem Unterordner von src dir

  collectCoverage: true,
  collectCoverageFrom: ['src/**/*.ts','!src/*/filesToExclude.ts']

  • Jetzt bin ich verwirrt. Tut ein ! (nicht) innerhalb von „collectCoverageFrom“ dasselbe bedeutet, als würde man diesen Datei-Regex in „coveragePathIgnorePatterns“ behalten?

    – etotientz

    17. Mai 2022 um 14:35 Uhr

Sie können auch Ihre hinzufügen package.js die folgende:

... // Other data
"jest": {
    "coveragePathIgnorePatterns" : [
      "<rootDir>/src/index.js",
      "<rootDir>/src/reportWebVitals.js"
    ]
}
... // Other data

Das ist die einzige Konfiguration, die Sie benötigen, damit es funktioniert

  • Dabei fängt es an, Babel-Fehler auszulösen

    – efkah

    8. Februar um 13:22 Uhr

In meinem Fall folgendes rootDir Der Parameter jest bedeutete, dass das das „Test“-Verzeichnis war.

jest --rootDir=./test

1452970cookie-checkWie kann ich ein Dateimuster für die Jest-Codeabdeckung ignorieren?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy