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

Průvodce migrací ​

Migrace z Jest ​

Vitest byl navržen s API kompatibilním s Jest, aby byla migrace co nejjednodušší. I přes tuto snahu se můžete setkat s následujícími rozdíly:

Globální proměnné jsou ve výchozím nastavení zakázány ​

Jest má ve výchozím nastavení povolené globální API. Vitest nikoliv. Můžete buď povolit globální proměnné pomocí nastavení konfigurace globals, nebo aktualizovat kód tak, aby místo toho používal importy z modulu vitest.

Pokud se rozhodnete neaktivovat globální proměnné, mějte na paměti, že běžné knihovny jako testing-library nebudou automaticky spouštět DOM cleanup.

Nastavování mocků modulů ​

Při mockování modulu v Jest je návratová hodnota factory funkce výchozí export modulu. Ve Vitest musí factory funkce vracet objekt s explicitně definovanými exporty. Například následující jest.mock by musel být aktualizován takto:

diff
- jest.mock('./some-path', () => 'hello')
+ vi.mock('./some-path', () => ({
+   default: 'hello',
+ })

Pro více informací se podívejte na sekci API vi.mock.

Chování automatických mocků ​

Na rozdíl od Jest, pokud není volána funkce vi.mock(), mockované moduly ve složce <root>/__mocks__ nejsou načteny. Pokud je potřebujete simulovat v každém testu, podobně jako v Jest, můžete je mockovat uvnitř setupFiles.

Importování originálu mockovaného balíčku ​

Pokud částečně simulujete balíček, možná jste dříve používali funkci requireActual z Jest. Ve Vitest byste měli tato volání nahradit vi.importActual.

diff
- const { cloneDeep } = jest.requireActual('lodash/cloneDeep')
+ const { cloneDeep } = await vi.importActual('lodash/cloneDeep')

Proměnné prostředí ​

Stejně jako Jest, Vitest nastavuje NODE_ENV na test, pokud nebyla nastavena dříve. Vitest má také ekvivalent pro JEST_WORKER_ID s názvem VITEST_POOL_ID (vždy menší nebo roven maxThreads). Pokud se spoléháte na JEST_WORKER_ID, nezapomeňte ji přejmenovat na VITEST_POOL_ID. Vitest také zpřístupňuje VITEST_WORKER_ID, což je jedinečné ID spuštěného workeru - toto číslo není ovlivněno maxThreads a bude se zvyšovat s každým vytvořeným workerem.

Pokud chcete změnit proměnné prostředí a používáte replaceProperty API v Jest, můžete použít vi.stubEnv k tomu i ve Vitest.

Done Callback ​

Od Vitest v0.10.0 je styl deklarování testů pomocí callbacku považován za zastaralý. Můžete je přepsat tak, aby používaly funkce async/await, nebo použít Promise k napodobení callback stylu.

diff
- it('should work', (done) => {
+ it('should work', () => new Promise(done => {
    // ...
    done()
- })
+ }))

Hooky ​

beforeAll/beforeEach hooky mohou ve Vitest vracet teardown funkci. Z tohoto důvodu můžete potřebovat přepsat deklarace hooků, pokud vracejí něco jiného než undefined nebo null:

diff
- beforeEach(() => setActivePinia(createTestingPinia()))
+ beforeEach(() => { setActivePinia(createTestingPinia()) })

Typy ​

Vitest nezpřístupňuje mnoho typů v namespacu Vi. Ten existuje hlavně pro kompatibilitu s matchery (porovnávači), takže možná budete muset importovat typy přímo z vitest namísto spoléhání se na namespace Vi:

diff
- let fn: jest.Mock<string, [string]>
+ import type { Mock } from 'vitest'
+ let fn: Mock<[string], string>

Kromě toho má Vitest typ Args jako první argument namísto Returns, jak můžete vidět v diff.

Časovače ​

Vitest nepodporuje starší časovače Jest.

Vue Snímky ​

Toto není funkce specifická pro Jest, ale pokud jste dříve používali Jest s vue-cli preset, budete muset nainstalovat balíček jest-serializer-vue a použít jej uvnitř setupFiles:

vite.config.js

js
import { defineConfig } from 'vite';

export default defineConfig({
  test: {
    setupFiles: ['./tests/unit/setup.js'],
  },
});

tests/unit/setup.js

js
import vueSnapshotSerializer from 'jest-serializer-vue';

expect.addSnapshotSerializer(vueSnapshotSerializer);

Jinak budou mít vaše snímky spoustu escapovaných uvozovek "。

Pager
Předchozí stránkaSrovnání s jinými testovacími nástroji
Další stránkaBěžné chyby

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors

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

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors