Skip to content
Vitest 3
Main Navigation Průvodce & APIKonfiguraceRežim prohlížečePokročilé API
3.2.0
2.1.9
1.6.1
0.34.6

čeština

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
magyar

čeština

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
magyar

Vzhled

Sidebar Navigation

Úvod

Proč Vitest

Začínáme

Funkce

Konfigurace Vitestu

API

Testovací reference API

Mockovací funkce

Vi

expect

expectTypeOf

assert

assertType

Průvodce

Rozhraní příkazového řádku

Filtrování testů

Testovací projekty

Generátory zpráv

Pokrytí kódu

Snímky

Mockování

Paralelní zpracování

Typové testování

Vitest UI

Testování přímo ve zdrojovém kódu

Testovací kontext

Anotace testů

Testovací prostředí

Rozšíření matcherů

Integrace s IDE

Ladění

Běžné chyby

Průvodce migrací

Migrace na Vitest 3.0

Migrace z Jest

Výkon

Profilování výkonu testů

Zlepšení výkonu

Režim prohlížeče

Rozšířené API

Srovnání

Na této stránce

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:

ts
// 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/:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'], 
  },
});

Pak můžete začít testovat!

bash
$ 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:

ts
/// <reference types="vitest/config" />

import { defineConfig } from 'vite'

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'],
  },
  define: { 
    'import.meta.vitest': 'undefined', 
  }, 
})

Jiné bundlery ​

unbuild
ts
import { defineBuildConfig } from 'unbuild'

export default defineBuildConfig({
  replace: { 
    'import.meta.vitest': 'undefined', 
  }, 
  // other options
})

Více informací: unbuild

Rollup
ts
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:

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.

Pager
Předchozí stránkaVitest UI
Další stránkaTestovací kontext

Vydáno pod licencí MIT.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/guide/in-source

Vydáno pod licencí MIT.

Copyright (c) 2021-Present Vitest Team