Skip to content
Vitest 0
Main Navigation PrzewodnikAPIKonfiguracjaZaawansowany
1.6.1
0.34.6

Polski

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

Polski

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

Wygląd

Sidebar Navigation

Przewodnik

Dlaczego Vitest

Wprowadzenie

Funkcje

Obszar roboczy

Interfejs Linii Poleceń

Filtrowanie Testów

Pokrycie kodu

Snapshot

Mockowanie

Testowanie Typów

Interfejs użytkownika Vitest

Tryb przeglądarki (eksperymentalny)

Testowanie w kodzie źródłowym

Kontekst Testowy

Środowisko Testowe

Rozszerzanie Matcherów

Integracje z IDE

Debugowanie

Porównania z innymi narzędziami do uruchamiania testów

Przewodnik migracji

Częste błędy

API

Dokumentacja API Testów

Funkcje Mockujące

Vi

expect

expectTypeOf

assertType

Konfiguracja

Konfiguracja Vitest

Na tej stronie

Przewodnik migracji ​

Migracja z Jest ​

Vitest został zaprojektowany z API kompatybilnym z Jest, aby maksymalnie uprościć migrację. Pomimo tych starań, możesz napotkać następujące różnice:

Domyślne zmienne globalne ​

Jest domyślnie włącza swoje globalne API. Vitest tego nie robi. Możesz włączyć zmienne globalne za pomocą opcji konfiguracyjnej globals lub zaktualizować kod, aby używać importów z modułu vitest.

Jeśli zdecydujesz się pozostawić zmienne globalne wyłączone, pamiętaj, że popularne biblioteki, takie jak testing-library, nie będą automatycznie przeprowadzać czyszczenia DOM.

Mockowanie modułów ​

W Jest, podczas mockowania modułu, wartość zwracana przez funkcję fabrykującą jest traktowana jako eksport domyślny. W Vitest funkcja fabrykująca musi zwrócić obiekt z każdym eksportem zdefiniowanym w sposób jawny. Na przykład, następujący jest.mock wymaga aktualizacji:

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

Więcej szczegółów znajdziesz w sekcji API vi.mock.

Automatyczne mockowanie ​

W przeciwieństwie do Jest, moduły mockowane w <root>/__mocks__ nie są ładowane, chyba że zostanie wywołane vi.mock(). Jeśli chcesz, aby były mockowane w każdym teście, tak jak w Jest, możesz je zamockować w setupFiles.

Importowanie oryginalnej wersji mockowanego pakietu ​

Jeśli mockujesz tylko część pakietu, mogłeś wcześniej korzystać z funkcji requireActual w Jest. W Vitest powinieneś zastąpić te wywołania przez vi.importActual.

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

Zmienne środowiskowe ​

Podobnie jak Jest, Vitest ustawia NODE_ENV na test, jeśli nie został wcześniej ustawiony. Vitest ma również odpowiednik zmiennej JEST_WORKER_ID, którym jest VITEST_POOL_ID (zawsze mniejszy lub równy wartości maxThreads). Jeśli używasz JEST_WORKER_ID, zmień nazwę na VITEST_POOL_ID. Vitest udostępnia również VITEST_WORKER_ID, który jest unikalnym identyfikatorem uruchomionego workera - ta liczba nie zależy od maxThreads i rośnie z każdym utworzonym workerem.

Jeśli chcesz zmodyfikować zmienne środowiskowe, używając replaceProperty API w Jest, możesz użyć vi.stubEnv w Vitest w ten sam sposób.

Funkcja zwrotna Done ​

Od Vitest v0.10.0, deklarowanie testów z użyciem callbacków jest przestarzałe. Możesz je przepisać, aby używać async/await lub Promise, aby naśladować styl funkcji zwrotnej.

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

Hooki ​

Hooki beforeAll/beforeEach w Vitest mogą zwracać funkcję teardown. Jeśli twoje deklaracje hooków zwracają coś innego niż undefined lub null, konieczne może być ich przepisanie:

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

Typy ​

Vitest nie udostępnia wielu typów w przestrzeni nazw Vi. Przestrzeń ta istnieje głównie w celu zapewnienia kompatybilności z matcherami. Zamiast polegać na przestrzeni nazw Vi, możesz importować typy bezpośrednio z vitest:

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

Ponadto, Vitest przyjmuje typ Args jako pierwszy argument zamiast Returns, jak pokazano w przykładzie.

Timery ​

Vitest nie obsługuje starszych timerów Jest.

Migawki Vue ​

Nie jest to funkcja specyficzna dla Jest, ale jeśli wcześniej używałeś Jest z presetem vue-cli, musisz zainstalować pakiet jest-serializer-vue i użyć go wewnątrz 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);

W przeciwnym razie w migawkach pojawi się wiele znaków " wymagających escape'owania.

Pager
Poprzednia stronaPorównania z innymi narzędziami do uruchamiania testów
Następna stronaCzęste błędy

Opublikowano na licencji MIT.

Copyright (c) 2024 Mithril Contributors

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

Opublikowano na licencji MIT.

Copyright (c) 2024 Mithril Contributors