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:
// vite.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:
# A v8-hoz
npm i -D @vitest/coverage-v8
# Az istanbulhoz
npm i -D @vitest/coverage-istanbulLefedettség Beállítása
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.
{
"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:
// vite.config.ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
coverage: {
reporter: ['text', 'json', 'html'],
},
},
});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:
// vite.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.
// 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.
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:
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.
-/* istanbul ignore if */
+/* istanbul ignore if -- @preserve */
if (condition) {A v8 esetében ez nem jelent problémát. A c8 ignore megjegyzések a Typescripttel a szokásos módon használhatók:
/* c8 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=truebeállítást a konfigurációs fájlban, vagy futtassa a Vitest-et a--coverage.enabled=trueflag-gel - adja hozzá a
html-t acoverage.reporterslistához: engedélyezheti asubdiropciót is, hogy a lefedettségi jelentést egy alkönyvtárba helyezze



