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.
WARNING
Tento průvodce vysvětluje, jak psát testy uvnitř vašeho zdrojového kódu. Pokud potřebujete psát testy v samostatných souborech testů, postupujte podle průvodce "Psaní testů".
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/
.
// vitest.config.ts
import { defineConfig } from 'vitest/config';
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:
// vitest.config.ts
import { defineConfig } from 'vitest/config';
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 examples/in-source-test
.
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.