Skip to content
Vitest 1
Main Navigation ÚtmutatóAPIKonfigurációHaladó
1.6.1
0.34.6

magyar

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština

magyar

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština

Megjelenés

Sidebar Navigation

Útmutató

Miért a Vitest?

Első lépések

Funkciók

Munkaterület

Parancssori felület

Tesztszűrés

Reporterek

Lefedettség

Pillanatképek

Mockolás

Típusok tesztelése

Vitest UI

Böngésző mód

Forráskódba épített tesztelés

Tesztkörnyezet

Tesztkörnyezet

Egyezésvizsgálók kiterjesztése

IDE integrációk

Hibakeresés

Összehasonlítás más tesztfuttatókkal

Migrálási útmutató

Gyakori hibák

A teljesítmény javítása

API

Teszt API Dokumentáció

Mock függvények

Vi

expect

expectTypeOf

assert

assertType

Konfiguráció

A Vitest konfigurációs fájl beállítása

Vitest konfigurálása

Ezen az oldalon

Lefedettség ​

A Vitest natív kódfedettséget támogat a v8 és instrumentált kódfedettséget az istanbul segítségével.

Lefedettségi Szolgáltatók ​

TIP

Vitest v0.22.0 óta

Mind a v8, mind az istanbul támogatása opcionális. Alapértelmezés szerint a v8 kerül használatra.

A lefedettség eszköz kiválasztásához állítsa a test.coverage.provider értékét v8-ra vagy istanbul-ra:

ts
// vitest.config.ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    coverage: {
      provider: 'istanbul', // vagy 'v8'
    },
  },
});

Amikor elindítja a Vitest-et, automatikusan felajánlja a megfelelő támogatási csomag telepítését.

Vagy ha inkább manuálisan telepítené őket:

bash
# A v8-hoz
npm i -D @vitest/coverage-v8

# Az istanbulhoz
npm i -D @vitest/coverage-istanbul

Lefedettség Beállítása ​

TIP

Javasolt mindig definiálni a coverage.include beállítást a konfigurációs fájlban. Ez segít a Vitestnek csökkenteni a coverage.all által kiválasztott fájlok számát.

Lefedettség melletti teszteléshez használja a --coverage flag-et a CLI-ben. Alapértelmezés szerint a ['text', 'html', 'clover', 'json'] riportálók lesznek használva.

json
{
  "scripts": {
    "test": "vitest",
    "coverage": "vitest run --coverage"
  }
}

A konfiguráláshoz állítsa be a test.coverage beállításokat a konfigurációs fájlban:

ts
// vitest.config.ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    coverage: {
      reporter: ['text', 'json', 'html'],
    },
  },
});

Egyéni lefedettségi riporter ​

Egyéni lefedettségi riportereket használhat a csomag névét vagy abszolút elérési útját megadva a test.coverage.reporter beállításban:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    coverage: {
      reporter: [
        // Riportaló megadása NPM csomag neve alapján
        ['@vitest/custom-coverage-reporter', { someOption: true }],

        // Riportaló megadása helyi elérési út alapján
        '/absolute/path/to/custom-reporter.cjs',
      ],
    },
  },
});

Az egyéni riportereket az Istanbul tölti be, és meg kell felelniük a riportalói interfészének. Tekintse meg a beépített riporterek implementációját referenciaként.

js
// custom-reporter.cjs
const { ReportBase } = require('istanbul-lib-report');

module.exports = class CustomReporter extends ReportBase {
  constructor(opts) {
    super();

    // A konfigurációból átadott opciók itt érhetők el
    this.file = opts.file;
  }

  onStart(root, context) {
    this.contentWriter = context.writer.writeFile(this.file);
    this.contentWriter.println('Start of custom coverage report');
  }

  onEnd() {
    this.contentWriter.println('End of custom coverage report');
    this.contentWriter.close();
  }
};

Egyéni Lefedettség Szolgáltató ​

Egyéni lefedettségi szolgáltatót is megadhat a test.coverage.provider értékének 'custom' -ra állításával:

ts
// vitest.config.ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    coverage: {
      provider: 'custom',
      customProviderModule: 'my-custom-coverage-provider',
    },
  },
});

Az egyéni szolgáltatókhoz egy customProviderModule opció szükséges, amely egy modulnév vagy elérési út a CoverageProviderModule betöltéséhez. Ennek egy olyan objektumot kell exportálnia, amely a CoverageProviderModule-t alapértelmezett exportként valósítja meg.

ts
// my-custom-coverage-provider.ts
import type {
  CoverageProvider,
  CoverageProviderModule,
  ResolvedCoverageOptions,
  Vitest,
} from 'vitest';

const CustomCoverageProviderModule: CoverageProviderModule = {
  getProvider(): CoverageProvider {
    return new CustomCoverageProvider();
  },

  // Implements rest of the CoverageProviderModule ...
};

class CustomCoverageProvider implements CoverageProvider {
  name = 'custom-coverage-provider';
  options!: ResolvedCoverageOptions;

  initialize(ctx: Vitest) {
    this.options = ctx.config.coverage;
  }

  // Implements rest of the CoverageProvider ...
}

export default CustomCoverageProviderModule;

További részletekért tekintse meg a típusdefiníciót.

Az alapértelmezett lefedettségi mappa helyének megváltoztatása ​

Lefedettség vizsgálatkor egy coverage mappa jön létre a projekt gyökérkönyvtárában. Ha egy másik könyvtárba szeretné helyezni, használja a test.coverage.reportsDirectory tulajdonságot a vite.config.js fájlban.

js
import { defineConfig } from 'vite';

export default defineConfig({
  test: {
    coverage: {
      reportsDirectory: './tests/unit/coverage',
    },
  },
});

Kód kihagyása ​

Mindkét lefedettség szolgáltatónak megvan a saját módja a kód kihagyására a lefedettségi jelentésekből:

  • v8
  • ìstanbul

TypeScript használata esetén a forráskódok az esbuild segítségével kerülnek transzpilálásra, amely eltávolítja az összes megjegyzést a forráskódokból (esbuild#516). A jogi megjegyzéseknek minősülő megjegyzések megmaradnak.

Az istanbul szolgáltató esetében a @preserve kulcsszót is belefoglalhatja a figyelmen kívül hagyási tippbe. Ne feledje, hogy ezek a figyelmen kívül hagyási tippek mostantól a végső éles buildben is szerepelhetnek.

diff
-/* istanbul ignore if */
+/* istanbul ignore if -- @preserve */
if (condition) {

A v8 esetében ez nem jelent problémát. A v8 ignore megjegyzések a Typescripttel a szokásos módon használhatók:

ts
/* v8 ignore next 3 */
if (condition) {

Egyéb Opciók ​

A lefedettségi beállításokért lásd a lefedettség Konfigurációs Referenciát.

Vitest UI ​

A Vitest 0.31.0 óta ellenőrizheti a lefedettségi jelentést a Vitest UI-ban.

A Vitest UI akkor jeleníti meg a lefedettségi jelentést, ha az engedélyezve van, és a html lefedettségi riportáló elérhető. Ellenkező esetben nem lesz elérhető:

  • engedélyezze a coverage.enabled=true beállítást a konfigurációs fájlban, vagy futtassa a Vitest-et a --coverage.enabled=true flag-gel
  • adja hozzá a html-t a coverage.reporter listához: engedélyezheti a subdir opciót is, hogy a lefedettségi jelentést egy alkönyvtárba helyezze
html coverage activation in Vitest UIhtml coverage activation in Vitest UIhtml coverage in Vitest UIhtml coverage in Vitest UI
Pager
Előző oldalReporterek
Következő oldalPillanatképek

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors

https://v1.vitest.dev/guide/coverage

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors