Skip to content
Vitest 0
Main Navigation PrůvodceAPIKonfiguracePokročilý
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

Průvodce

Proč Vitest

Začínáme

Funkce

Pracovní prostor

Rozhraní příkazového řádku

Filtrování testů

Pokrytí

Snímky

Mockování

Testování typů

Vitest UI

Režim prohlížeče (experimentální)

Testování ve zdrojovém kódu

Kontext testu

Testovací prostředí

Rozšíření matcherů/porovnávačů

Integrace do IDE

Ladění

Srovnání s jinými testovacími nástroji

Průvodce migrací

Běžné chyby

API

Referenční příručka k Test API

Mockování funkcí

Vi

expect

expectTypeOf

assertType

Konfigurace

Konfigurace Vitest

Na této stránce

Funkce ​

  • Vite konfigurace, transformátory, resolvery a pluginy.
  • Použijte stejné nastavení jako ve vaší aplikaci pro spouštění testů!
  • Rychlý a inteligentní režim sledování, fungující jako HMR pro testy!
  • Komponentové testování pro Vue, React, Svelte, Lit a další
  • Podpora TypeScript / JSX ihned po instalaci
  • ESM first, top level await
  • Vícevláknové zpracování pomocí workerů přes Tinypool
  • Podpora benchmarkingu s Tinybench
  • Filtrování, časové limity a souběžnost pro testy a testovací sady
  • Podpora pracovního prostoru (Workspace)
  • Snapshoty kompatibilní s Jestem
  • Vestavěný Chai pro tvrzení (assertions) + API kompatibilní s Jest expect
  • Vestavěný Tinyspy pro mocking
  • happy-dom nebo jsdom pro DOM mocking
  • Pokrytí kódu přes v8 nebo istanbul
  • Testování přímo ve zdrojovém kódu ve stylu Rustu (in-source testing)
  • Testování typů přes expect-type
Naučte se napsat svůj první test pomocí videa

Sdílená konfigurace mezi testy, vývojem a sestavením ​

Vite konfigurace, transformátory, resolvery a pluginy. Použijte stejné nastavení jako ve vaší aplikaci pro spouštění testů.

Více informací najdete v Konfiguraci Vitestu.

Režim sledování (Watch Mode) ​

bash
$ vitest

Když upravíte zdrojový kód nebo testovací soubory, Vitest inteligentně prohledá graf modulů a znovu spustí pouze související testy, stejně jako funguje HMR ve Vite!

vitest se spouští v režimu sledování ve vývojovém prostředí ve výchozím nastavení a v režimu spuštění v CI prostředí (pokud je přítomna proměnná prostředí process.env.CI). Můžete použít vitest watch nebo vitest run k explicitnímu určení požadovaného režimu.

Běžné webové postupy ihned po instalaci ​

Podpora ES modulů / TypeScript / JSX / PostCSS ihned po instalaci.

Vlákna (Threads) ​

Vícevláknové zpracování pomocí workerů přes Tinypool (odlehčená větev Piscina), umožňující souběžné spouštění testů. Vlákna jsou ve Vitest ve výchozím nastavení povolena a lze je zakázat předáním --no-threads v CLI.

Vitest také izoluje prostředí každého souboru, takže mutace prostředí v jednom souboru neovlivňují ostatní. Izolaci lze zakázat předáním --no-isolate do CLI (obětování správnosti za vyšší výkon).

Filtrování testů ​

Vitest poskytuje mnoho způsobů, jak zúžit sadu spouštěných testů, a tím urychlit testování a umožnit soustředit se na vývoj.

Více informací o Filtrování testů.

Souběžné spouštění testů ​

Použijte .concurrent u po sobě jdoucích testů ke spuštění paralelně.

ts
import { describe, it } from 'vitest';

// Dva testy označené jako concurrent budou spuštěny paralelně
describe('suite', () => {
  it('serial test', async () => {
    /* ... */
  });
  it.concurrent('concurrent test 1', async ({ expect }) => {
    /* ... */
  });
  it.concurrent('concurrent test 2', async ({ expect }) => {
    /* ... */
  });
});

Pokud použijete .concurrent na sadu (suite), každý test v ní bude spuštěn paralelně.

ts
import { describe, it } from 'vitest';

// Všechny testy v této sadě budou spuštěny paralelně
describe.concurrent('suite', () => {
  it('concurrent test 1', async ({ expect }) => {
    /* ... */
  });
  it('concurrent test 2', async ({ expect }) => {
    /* ... */
  });
  it.concurrent('concurrent test 3', async ({ expect }) => {
    /* ... */
  });
});

Můžete také použít .skip, .only a .todo se souběžnými sadami a testy. Přečtěte si více v API Reference.

WARNING

Při spouštění souběžných testů musí snapshoty a assertion používat expect z lokálního Test Context, aby bylo zajištěno, že je detekován správný test.

Snapshoty ​

Podpora snapshotů kompatibilních s Jestem.

ts
import { expect, it } from 'vitest';

it('renders correctly', () => {
  const result = render();
  expect(result).toMatchSnapshot();
});

Více informací naleznete v Snapshot.

Kompatibilita Chai a Jest expect ​

Vestavěný Chai pro tvrzení (assertions) plus API kompatibilní s Jest expect.

Všimněte si, že nastavením test.globals na true dosáhnete lepší kompatibility, pokud používáte knihovny třetích stran, které přidávají matchers (porovnávače).

Mocking ​

Vestavěný Tinyspy pro mocking s API kompatibilním s jest na objektu vi.

ts
import { expect, vi } from 'vitest';

const fn = vi.fn();

fn('hello', 1);

expect(vi.isMockFunction(fn)).toBe(true);
expect(fn.mock.calls[0]).toEqual(['hello', 1]);

fn.mockImplementation(arg => arg);

fn('world', 2);

expect(fn.mock.results[1].value).toBe('world');

Vitest podporuje jak happy-dom nebo jsdom pro DOM mocking a browser API. Nejsou součástí Vitest, možná je budete muset nainstalovat:

bash
$ npm i -D happy-dom
# or
$ npm i -D jsdom

Poté změňte možnost environment ve vašem konfiguračním souboru:

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

export default defineConfig({
  test: {
    environment: 'happy-dom', // or 'jsdom', 'node'
  },
});

Více informací naleznete v Mocking.

Coverage (Pokrytí kódu) ​

Vitest podporuje nativní pokrytí kódu pomocí v8 a instrumentované pokrytí kódu pomocí istanbul.

json
{
  "scripts": {
    "test": "vitest",
    "coverage": "vitest run --coverage"
  }
}

Více informací naleznete v Coverage.

In-source testing ​

Vitest také poskytuje způsob, jak spouštět testy ve vašem zdrojovém kódu spolu s implementací, podobně jako modulové testy Rustu.

Díky tomu testy sdílejí stejný closure jako implementace a mohou testovat proti soukromým stavům bez nutnosti exportu. Mezitím také přináší užší zpětnovazební smyčku pro vývoj.

ts
// src/index.ts

// implementace
export function add(...args: number[]) {
  return args.reduce((a, b) => a + b, 0);
}

// in-source test suites
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);
  });
}

Více informací naleznete v In-source testing.

Benchmarking experimental ​

Od verze Vitest 0.23.0 můžete používat funkci bench s knihovnou Tinybench k benchmarkingu a porovnávání výkonu.

ts
import { bench, describe } from 'vitest';

describe('sort', () => {
  bench('normal', () => {
    const x = [1, 5, 4, 2, 3];
    x.sort((a, b) => {
      return a - b;
    });
  });

  bench('reverse', () => {
    const x = [1, 5, 4, 2, 3];
    x.reverse().sort((a, b) => {
      return a - b;
    });
  });
});

Type Testing experimental ​

Od Vitest 0.25.0 můžete psát testy pro zachycení typových regresí. Vitest je dodáván s balíčkem expect-type, který vám poskytne podobné a snadno srozumitelné API.

ts
import { assertType, expectTypeOf } from 'vitest';
import { mount } from './mount.js';

test('my types work properly', () => {
  expectTypeOf(mount).toBeFunction();
  expectTypeOf(mount).parameter(0).toMatchTypeOf<{ name: string }>();

  // @ts-expect-error name is a string
  assertType(mount({ name: 42 }));
});
Pager
Předchozí stránkaZačínáme
Další stránkaPracovní prostor

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors

https://v0.vitest.dev/guide/features

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors