Testování ve zdrojovém kódu
Vitest umožňuje spouštět testy přímo ve zdrojovém kódu, vedle implementace, podobně jako modulové testy v Rustu.
Testy tak sdílejí stejný kontext (closure) jako implementace a mohou testovat privátní stavy bez nutnosti je exportovat. To také poskytuje rychlejší zpětnou vazbu během vývoje.
Nastavení
Vložte blok if (import.meta.vitest)
na konec vašeho zdrojového souboru a do něj napište testy. Příklad:
// src/index.ts
// implementace
export function add(...args: number[]) {
return args.reduce((a, b) => a + b, 0);
}
// testovací sady přímo ve zdrojovém kódu
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);
});
}
Aktualizujte konfiguraci includeSource
pro Vitest, aby zahrnovala soubory v adresáři src/
.
// vite.config.ts
/// <reference types="vitest" />
import { defineConfig } from 'vite';
export default defineConfig({
test: {
includeSource: ['src/**/*.{js,ts}'],
},
});
Nyní můžete začít s testováním!
$ npx vitest
Produkční sestavení (Production build)
Pro produkční sestavení je nutné nastavit volbu define
v konfiguračním souboru, což umožní bundleru provést eliminaci nepoužívaného kódu (dead code elimination). Například ve Vite:
// vite.config.ts
/// <reference types="vitest" />
import { defineConfig } from 'vite';
export default defineConfig({
test: {
includeSource: ['src/**/*.{js,ts}'],
},
define: {
'import.meta.vitest': 'undefined',
},
});
Ostatní nástroje pro bundlování
unbuild
// build.config.ts
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
replace: {
'import.meta.vitest': 'undefined',
},
// other options
});
Další informace: unbuild
rollup
// rollup.config.js
import replace from '@rollup/plugin-replace';
export default {
plugins: [
replace({
'import.meta.vitest': 'undefined',
}),
],
// other options
};
Další informace: Rollup
TypeScript
Pro získání podpory TypeScriptu pro import.meta.vitest
přidejte vitest/importMeta
do pole types
ve vašem souboru tsconfig.json
.
// tsconfig.json
{
"compilerOptions": {
"types": [
"vitest/importMeta"
]
}
}
Pro kompletní příklad navštivte test/import-meta
.
Poznámky
Tato funkce se hodí pro:
- Jednotkové testování malých funkcí nebo utilit
- Rychlé prototypování
- Vkládání jednoduchých asercí
Pro složitější testy, jako jsou testy komponent nebo E2E testy, doporučujeme používat samostatné testovací soubory.