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-istanbul
Lefedettsé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=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 acoverage.reporters
listához: engedélyezheti asubdir
opciót is, hogy a lefedettségi jelentést egy alkönyvtárba helyezze



