Začínáme
Přehled
Vitest (vyslovuje se jako "vítest") je testovací framework nové generace, poháněný Vitem.
Více o důvodech vzniku projektu se dozvíte v sekci Proč Vitest.
Vyzkoušení Vitest online
Vitest si můžete vyzkoušet online na StackBlitz. Spouští Vitest přímo v prohlížeči a je téměř identický s lokálním nastavením, ale nevyžaduje instalaci ničeho na váš počítač.
Přidání Vitest do vašeho projektu
Naučte se instalovat pomocí videanpm install -D vitestyarn add -D vitestpnpm add -D vitestbun add -D vitestTIP
Vitest vyžaduje Vite >=v5.0.0 a Node >=v18.0.0.
Doporučuje se nainstalovat vitest do vašeho package.json jednou z výše uvedených metod. Pokud byste však raději spustili vitest přímo, můžete použít npx vitest (nástroj npx je dodáván s npm a Node.js).
Nástroj npx provede zadaný příkaz. Ve výchozím nastavení npx nejprve zkontroluje, zda příkaz existuje v lokálních binárních souborech projektu. Pokud tam není nalezen, npx se podívá do $PATH systému a provede jej, pokud je nalezen. Pokud příkaz není nalezen ani na jednom místě, npx jej před spuštěním nainstaluje do dočasného umístění.
Psaní testů
Jako příklad napíšeme jednoduchý test, který ověřuje výstup funkce sčítající dvě čísla.
export function sum(a, b) {
return a + b;
}import { expect, test } from 'vitest';
import { sum } from './sum.js';
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});TIP
Ve výchozím nastavení musí testy obsahovat .test. nebo .spec. v názvu souboru.
Dále, pro spuštění testu, přidejte následující sekci do vašeho package.json:
{
"scripts": {
"test": "vitest"
}
}Nakonec spusťte npm run test, yarn test nebo pnpm test, v závislosti na vašem správci balíčků, a Vitest vypíše tuto zprávu:
✓ sum.test.js (1)
✓ adds 1 + 2 to equal 3
Test Files 1 passed (1)
Tests 1 passed (1)
Start at 02:15:44
Duration 311msWARNING
Pokud používáte Bun jako správce balíčků, ujistěte se, že spouštíte bun run test namísto bun test, jinak Bun spustí svůj vlastní testovací runner.
Více o použití Vitest se dozvíte v sekci API.
Konfigurace Vitest
Jednou z hlavních výhod Vitestu je jeho jednotná konfigurace s Vite. Pokud je přítomen, vitest přečte váš kořenový vite.config.ts, aby se shodoval s pluginy a nastavením vaší Vite aplikace. Například vaše konfigurace Vite resolve.alias a plugins budou fungovat okamžitě. Pokud chcete jinou konfiguraci během testování, můžete:
- Vytvořit
vitest.config.ts, který bude mít vyšší prioritu. - Předat volbu
--configdo CLI, např.vitest --config ./path/to/vitest.config.ts. - Použít
process.env.VITESTnebo vlastnostmodenadefineConfig(bude nastavena natest, pokud není přepsána) pro podmíněné použití odlišné konfigurace vvite.config.ts.
Vitest podporuje stejné přípony pro váš konfigurační soubor jako Vite: .js, .mjs, .cjs, .ts, .cts, .mts. Vitest nepodporuje příponu .json.
Pokud nepoužíváte Vite jako svůj nástroj pro sestavení, můžete Vitest konfigurovat pomocí vlastnosti test ve vašem konfiguračním souboru:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
// ...
},
});TIP
I když sami Vite nepoužíváte, Vitest se na něj silně spoléhá pro svůj transformační pipeline. Z tohoto důvodu můžete také konfigurovat jakoukoli vlastnost popsanou v dokumentaci Vite.
Pokud již používáte Vite, přidejte vlastnost test do vaší Vite konfigurace. Budete také muset přidat odkaz na typy Vitest pomocí direktivy se třemi lomítky na začátek vašeho konfiguračního souboru.
/// <reference types="vitest" />
import { defineConfig } from 'vite';
export default defineConfig({
test: {
// ...
},
});<reference types="vitest" /> přestane fungovat v příští velké aktualizaci, ale můžete začít migrovat na vitest/config ve Vitest 2.1:
/// <reference types="vitest/config" />
import { defineConfig } from 'vite';
export default defineConfig({
test: {
// ... Zde specifikujte možnosti.
},
});Seznam možností konfigurace naleznete v Referenci konfigurace
WARNING
Pokud se rozhodnete mít dva samostatné konfigurační soubory pro Vite a Vitest, ujistěte se, že ve vašem konfiguračním souboru Vitest definujete stejné možnosti jako ve Vite, protože přepíše váš soubor Vite, místo aby jej rozšířil. Můžete také použít metodu mergeConfig z vite nebo vitest/config pro sloučení konfigurace Vite s konfigurací Vitest:
import { defineConfig, mergeConfig } from 'vitest/config';
import viteConfig from './vite.config.mjs';
export default mergeConfig(
viteConfig,
defineConfig({
test: {
// ...
},
})
);import { defineConfig } from 'vite';
import Vue from '@vitejs/plugin-vue';
export default defineConfig({
plugins: [Vue()],
});Doporučujeme však používat stejný soubor pro Vite i Vitest, namísto vytváření dvou samostatných souborů.
Podpora projektů
Spouštějte různé konfigurace projektů uvnitř stejného projektu pomocí Testovacích projektů. Seznam souborů a složek, které definují vaše projekty, můžete definovat v souboru vitest.config.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
projects: [
// můžete použít seznam globových vzorů k definování vašich projektů
// Vitest očekává seznam konfiguračních souborů
// nebo adresářů obsahujících konfigurační soubor
'packages/*',
'tests/*/vitest.config.{e2e,unit}.ts',
// můžete dokonce spouštět stejné testy,
// ale s různými konfiguracemi ve stejném procesu Vitest
{
test: {
name: 'happy-dom',
root: './shared_tests',
environment: 'happy-dom',
setupFiles: ['./setup.happy-dom.ts'],
},
},
{
test: {
name: 'node',
root: './shared_tests',
environment: 'node',
setupFiles: ['./setup.node.ts'],
},
},
],
},
});Rozhraní příkazového řádku
V projektu, kde je Vitest nainstalován, můžete použít binární soubor vitest ve vašich npm skriptech, nebo jej spustit přímo pomocí npx vitest. Zde jsou výchozí npm skripty v základním projektu Vitest:
{
"scripts": {
"test": "vitest",
"coverage": "vitest run --coverage"
}
}Pro spuštění testů jednou bez sledování změn souborů použijte vitest run. Můžete specifikovat další možnosti CLI, jako --port nebo --https. Pro úplný seznam možností CLI spusťte npx vitest --help ve vašem projektu.
Více o Rozhraní příkazového řádku
Automatická instalace závislostí
Vitest vás vyzve k instalaci určitých závislostí, pokud již nejsou nainstalovány. Toto chování můžete zakázat nastavením proměnné prostředí VITEST_SKIP_INSTALL_CHECKS=1.
Integrace IDE
Poskytujeme také oficiální rozšíření pro Visual Studio Code, které vylepší vaše zkušenosti s testováním s Vitestem.
Nainstalovat z VS Code Marketplace
Více o Integracích IDE
Příklady
| Příklad | Zdroj | Playground |
|---|---|---|
basic | GitHub | Hrát online |
fastify | GitHub | Hrát online |
in-source-test | GitHub | Hrát online |
lit | GitHub | Hrát online |
vue | GitHub | Hrát online |
marko | GitHub | Hrát online |
preact | GitHub | Hrát online |
react | GitHub | Hrát online |
solid | GitHub | Hrát online |
svelte | GitHub | Hrát online |
sveltekit | GitHub | Hrát online |
profiling | GitHub | Není k dispozici |
typecheck | GitHub | Hrát online |
projects | GitHub | Hrát online |
Projekty používající Vitest
- unocss
- unplugin-auto-import
- unplugin-vue-components
- vue
- vite
- vitesse
- vitesse-lite
- fluent-vue
- vueuse
- milkdown
- gridjs-svelte
- spring-easing
- bytemd
- faker
- million
- Vitamin
- neodrag
- svelte-multiselect
- iconify
- tdesign-vue-next
- cz-git
Používání nevydaných commitů
Každý commit na hlavní větvi a PR s nálepkou cr-tracked jsou publikovány na pkg.pr.new. Můžete je nainstalovat příkazem npm i https://pkg.pr.new/vitest@{commit}.
Pokud chcete otestovat vlastní úpravy lokálně, můžete si je sami sestavit a propojit (je vyžadován pnpm):
git clone https://github.com/vitest-dev/vitest.git
cd vitest
pnpm install
cd packages/vitest
pnpm run build
pnpm link --global # pro tento krok můžete použít vámi preferovaného správce balíčkůPoté přejděte do adresáře projektu, kde používáte Vitest, a spusťte pnpm link --global vitest (nebo správce balíčků, kterého jste použili k globálnímu propojení vitest).
Komunita
Pokud máte dotazy nebo potřebujete pomoc, obraťte se na komunitu na Discordu a GitHub diskusích.