Website-Suche

typescript - Kann Jest-Abdeckungsbericht nicht erzeugen


Ich arbeite an einem Next.js-Projekt in Typescript und verwende derzeit den SWC-Compiler. Daher verwende ich @swc/jest für meine Tests. Alle meine Tests bestehen, aber der Coverage-Bericht kommt immer leer zurück. So sieht meine jest.config.js aus:

module.exports = {
  'roots': ['<rootDir>/../src'],
  'moduleDirectories': ['node_modules', 'src'],
  'setupFilesAfterEnv': ['<rootDir>/setup-tests.js'],
  'coverageDirectory': '<rootDir>/../coverage',
  'verbose': true,
  'collectCoverage': true,
  'transform': {
    '^.+\\.(t|j)sx?$': [
      '@swc/jest',
      {
        'jsc': {
          target: 'es2021',
        },
        'sourceMaps': true,
      },
    ],
  },
  'collectCoverageFrom': [
    '<rootDir>/../src/**.{ts,js,tsx,jsx}',
    '!**/node_modules/**',
  ],
}

Meine Dateistruktur sieht folgendermaßen aus:

.
├── coverage
├── jest
│   ├── jest.config.js
│   ├── setup-tests.js
├── src/
├── tsconfig.json

Die Ausgabe sieht so aus:

----------|---------|----------|---------|---------|-------------------
File      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
----------|---------|----------|---------|---------|-------------------
All files |       0 |        0 |       0 |       0 |                   
----------|---------|----------|---------|---------|-------------------

Test Suites: 11 passed, 11 total
Tests:       25 passed, 25 total
Snapshots:   0 total
Time:        1.307 s
Ran all test suites.

Ich habe ein Problem bei @swc/jest erstellt, aber ich bin mir nicht sicher, ob das ein Problem bei ihnen oder etwas anderes ist, also dachte ich, ich frage auch hier.

Antwort #1

Ihr Wert für 'collectCoverageFrom' scheint mir in Ihrer Jest-Konfiguration fehlerhaft zu sein. Sie würden doppelte Sternchen ** verwenden, um alle Verzeichnisse und Unterverzeichnisse rekursiv zu erfassen, und ein einzelnes * als Platzhalter (ob für einen Verzeichnisnamen oder einen Dateinamen).

Um alle Dateien in allen Verzeichnissen zu erfassen (egal wie viele Unterverzeichnisse) ist:

src/**/*

Wenn Sie nur js- und ts-Dateien in allen Verzeichnissen möchten (egal wie viele Unterverzeichnisse):

src/**/*.{js,ts}

Wenn Sie alle Dateien nur im src-Verzeichnis haben:

src/*

Was Sie in Ihrer Konfiguration haben, stimmt mit einem Verzeichnis überein, das auf js, ts usw. endet.

Verwandte Artikel