Forráskódba épített tesztelés
A Vitest lehetővé teszi a tesztek futtatását közvetlenül a forráskódban, az implementációval egyidejűleg, hasonlóan a Rust modul tesztjeihez.
Ezáltal a tesztek ugyanabban a hatókörben futhatnak, mint az implementáció, és tesztelhetik a privát állapotokat exportálás nélkül. Emellett gyorsabb visszajelzést biztosít a fejlesztés során.
Beállítás
A kezdéshez helyezz egy if (import.meta.vitest)
blokkot a forrásfájl végére, és írj bele néhány tesztet. Például:
// src/index.ts
// az implementáció
export function add(...args: number[]) {
return args.reduce((a, b) => a + b, 0);
}
// forráskódba ágyazott tesztek
if (import.meta.vitest) {
const { it, expect } = import.meta.vitest;
it('add', () => {
expect(add()).toBe(0);
expect(add(1)).toBe(1);
expect(add(1, 2, 3)).toBe(6);
});
}
Állítsd be a includeSource
konfigurációt a Vitest számára, hogy a src/
könyvtárban lévő fájlokat is tartalmazza:
// vite.config.ts
/// <reference types="vitest" />
import { defineConfig } from 'vite';
export default defineConfig({
test: {
includeSource: ['src/**/*.{js,ts}'],
},
});
Ezután elkezdheted a tesztelést!
$ npx vitest
Éles (Production) build
Az éles buildhez be kell állítanod a define
opciókat a konfigurációs fájlban, hogy a bundler el tudja végezni a halott kód eltávolítását. Például a Vite-ben:
// vite.config.ts
/// <reference types="vitest" />
import { defineConfig } from 'vite';
export default defineConfig({
test: {
includeSource: ['src/**/*.{js,ts}'],
},
define: {
'import.meta.vitest': 'undefined',
},
});
Más Bundlerek
unbuild
// build.config.ts
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
replace: {
'import.meta.vitest': 'undefined',
},
// other options
});
További információ: unbuild
rollup
// rollup.config.js
import replace from '@rollup/plugin-replace';
export default {
plugins: [
replace({
'import.meta.vitest': 'undefined',
}),
],
// other options
};
További információ: Rollup
TypeScript
A import.meta.vitest
TypeScript támogatásához add hozzá a vitest/importMeta
elemet a tsconfig.json
fájl types
tömbjéhez:
// tsconfig.json
{
"compilerOptions": {
"types": [
"vitest/importMeta"
]
}
}
A teljes példáért lásd a test/import-meta
könyvtárat.
Megjegyzések
Ez a funkció a következő esetekben hasznos:
- Egységteszteléshez kis hatókörű függvényekhez vagy segédeszközökhöz
- Prototípus készítéséhez
- Beágyazott állításokhoz
Javasoljuk, hogy használj külön tesztfájlokat az összetettebb tesztekhez, például komponensek vagy E2E tesztelés esetén.