Skip to content
Vitest 0
Main Navigation LeitfadenAPIKonfigurationFortgeschritten
1.6.1
0.34.6

Deutsch

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

Deutsch

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

Aussehen

Sidebar Navigation

Leitfaden

Warum Vitest

Erste Schritte

Features

Workspace

Kommandozeilenschnittstelle

Testfilter

Codeabdeckung (Coverage)

Snapshot

Mocking

Typentests

Vitest UI

Experimenteller Browser-Modus

In-Source-Testing

Testkontext

Testumgebung

Erweiterung von Matchern

IDE-Integration

Debugging

Vergleiche mit anderen Test-Runnern

Migrationshandbuch

Häufige Fehler

API

Test API Referenz

Mock-Funktionen

Vi

expect

expectTypeOf

assertType

Konfiguration

Konfiguration von Vitest

Auf dieser Seite

Migrationshandbuch ​

Migration von Jest zu Vitest ​

Vitest wurde mit einer Jest-kompatiblen API entwickelt, um die Migration von Jest so einfach wie möglich zu gestalten. Trotz dieser Bemühungen können dennoch folgende Unterschiede auftreten:

Globale APIs standardmäßig ​

Jest hat seine globale API standardmäßig aktiviert. Vitest hingegen nicht. Sie können entweder globale APIs über die Konfigurationseinstellung globals aktivieren oder Ihren Code aktualisieren, um stattdessen Importe aus dem Modul vitest zu verwenden.

Wenn Sie globale Variablen deaktiviert lassen, beachten Sie, dass gängige Bibliotheken wie testing-library kein automatisches DOM-Cleanup durchführen.

Modul-Mocks ​

Beim Simulieren eines Moduls in Jest ist der Rückgabewert des Factory-Arguments der Standardexport. In Vitest muss das Factory-Argument ein Objekt zurückgeben, in dem jeder Export explizit definiert ist. Beispielsweise müsste der folgende jest.mock-Aufruf wie folgt aktualisiert werden:

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

Weitere Informationen finden Sie im Abschnitt zur vi.mock-API.

Automatisches Mocking-Verhalten ​

Im Gegensatz zu Jest werden gemockte Module in <root>/__mocks__ nicht geladen, es sei denn, vi.mock() wird aufgerufen. Wenn Sie möchten, dass sie in jedem Test gemockt werden, wie in Jest, können Sie sie in setupFiles mocken.

Importieren des Originals eines gemockten Pakets ​

Wenn Sie ein Paket nur teilweise mocken, haben Sie möglicherweise zuvor die Jest-Funktion requireActual verwendet. In Vitest sollten Sie diese Aufrufe durch vi.importActual ersetzen.

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

Umgebungsvariablen ​

Genau wie Jest setzt Vitest NODE_ENV auf test, sofern diese Variable nicht bereits gesetzt ist. Vitest hat auch ein Gegenstück für JEST_WORKER_ID namens VITEST_POOL_ID (immer kleiner oder gleich maxThreads). Wenn Sie sich darauf verlassen, vergessen Sie nicht, es umzubenennen. Vitest stellt auch VITEST_WORKER_ID bereit, eine eindeutige ID eines laufenden Workers - diese Zahl wird von maxThreads nicht beeinflusst und erhöht sich mit jedem erstellten Worker.

Wenn Sie die Umgebungsvariablen ändern möchten, konnten Sie in Jest die replaceProperty API benutzen. In Vitest können Sie dies auch mit vi.stubEnv tun.

Done Callback ​

Ab Vitest v0.10.0 ist die Callback-Methode zum Deklarieren von Tests nicht mehr empfohlen. Sie können sie umschreiben, um async/await-Funktionen zu verwenden, oder Promise verwenden, um den Callback-Stil zu imitieren.

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

Hooks ​

beforeAll/beforeEach-Hooks können in Vitest eine Aufräumfunktion zurückgeben. Aus diesem Grund müssen Sie möglicherweise Ihre Hook-Deklarationen umschreiben, wenn sie etwas anderes als undefined oder null zurückgeben:

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

Typen ​

Vitest stellt nicht viele Typen im Vi-Namespace bereit. Er existiert hauptsächlich zur Kompatibilität mit Matchern, sodass Sie Typen möglicherweise direkt aus vitest importieren müssen, anstatt sich auf den Vi-Namespace zu verlassen:

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

Zudem verwendet Vitest den Typ Args als erstes Argument anstelle von Returns, wie im Diff dargestellt.

Timer ​

Vitest unterstützt die Legacy-Timer von Jest nicht.

Vue Snapshots ​

Dies ist keine Jest-spezifische Funktion, aber wenn Sie zuvor Jest mit der vue-cli-Voreinstellung verwendet haben, müssen Sie das Paket jest-serializer-vue installieren und es in setupFiles verwenden:

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);

Andernfalls enthalten Ihre Snapshots viele escaped "-Zeichen.

Pager
Vorherige SeiteVergleiche mit anderen Test-Runnern
Nächste SeiteHäufige Fehler

Veröffentlicht unter der MIT-Lizenz.

Copyright (c) 2024 Mithril Contributors

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

Veröffentlicht unter der MIT-Lizenz.

Copyright (c) 2024 Mithril Contributors