Testování přímo ve zdrojovém kódu
Vitest nabízí možnost spouštět testy přímo ve vašem zdrojovém kódu, vedle samotné implementace. Tento přístup je podobný modulovým testům v Rustu.
Díky tomu testy sdílejí stejný kontext jako implementace a mohou testovat soukromé stavy bez nutnosti jejich exportu. Zároveň to zajišťuje rychlejší zpětnou vazbu během vývoje.
WARNING
Tato příručka vysvětluje, jak psát testy uvnitř vašeho zdrojového kódu. Pokud potřebujete psát testy v samostatných testovacích souborech, postupujte podle příručky "Psaní testů".
Nastavení
Nejprve umístěte blok if (import.meta.vitest)
na konec vašeho zdrojového souboru a poté do něj napište testy. Například:
// implementace
export function add(...args: number[]) {
return args.reduce((a, b) => a + b, 0);
}
// testy 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 ve složce src/
:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
includeSource: ['src/**/*.{js,ts}'],
},
});
Pak můžete začít testovat!
$ npx vitest
Produkční sestavení
Pro produkční sestavení musíte nastavit možnosti define
ve svém konfiguračním souboru, aby bundler mohl provést odstranění mrtvého kódu (dead code elimination). Například ve Vite:
/// <reference types="vitest/config" />
import { defineConfig } from 'vite'
export default defineConfig({
test: {
includeSource: ['src/**/*.{js,ts}'],
},
define: {
'import.meta.vitest': 'undefined',
},
})
Jiné bundlery
unbuild
import { defineBuildConfig } from 'unbuild'
export default defineBuildConfig({
replace: {
'import.meta.vitest': 'undefined',
},
// other options
})
Více informací: unbuild
Rollup
import replace from '@rollup/plugin-replace'
export default {
plugins: [
replace({
'import.meta.vitest': 'undefined',
})
],
// other options
}
Více informací: Rollup
TypeScript
Pro získání podpory TypeScriptu pro import.meta.vitest
přidejte vitest/importMeta
do souboru tsconfig.json
:
{
"compilerOptions": {
"types": [
"vitest/importMeta"
]
}
}
Úplný příklad viz examples/in-source-test
.
Poznámky
Tato funkce může být užitečná pro:
- Jednotkové testování malých funkcí nebo utilit
- Prototypování
- Vložená ověření
Pro složitější testy, jako jsou testy komponent nebo E2E testování, se doporučuje spíše používat samostatné testovací soubory.