Skip to content
Vitest 0
Main Navigation GuideAPIConfigurationAvancé
1.6.1
0.34.6

Français

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

Français

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

Apparence

Sidebar Navigation

Guide

Pourquoi Vitest

Premiers pas

Fonctionnalités

Workspace

Interface de ligne de commande

Filtrage des tests

Couverture

Instantané (Snapshot)

Simulations

Tests de Typage

Interface utilisateur de Vitest

Mode Navigateur (expérimental)

Tests intégrés au code source

Contexte de Test

Environnement de test

Extension des vérificateurs (Matchers)

Intégrations pour IDE

Débogage

Comparaison avec d'autres outils de test

Guide de migration

Erreurs courantes

API

Référence de l'API de Test

Fonctions Mock

Vi

expect

expectTypeOf

assertType

Configuration

Configuration de Vitest

Sur cette page

Guide de migration ​

Migration de Jest ​

Vitest propose une API compatible avec Jest, afin de rendre la migration depuis Jest aussi simple que possible. Malgré ces efforts, vous pourriez rencontrer les différences ci-dessous :

Globals par Défaut ​

Jest a son API globals activée par défaut. Vitest ne l'a pas. Vous pouvez soit activer les globales via l'option de configuration globals, soit mettre à jour votre code pour utiliser les importations du module vitest à la place.

Si vous décidez de garder les globales désactivées, sachez que les bibliothèques courantes comme testing-library n'exécuteront pas le "nettoyage automatique du DOM" (https://testing-library.com/docs/svelte-testing-library/api/#cleanup).

Simulation de modules ​

Lorsqu'on simule un module dans Jest, la valeur renvoyée par l'argument factory est l'export par défaut. Dans Vitest, l'argument factory doit retourner un objet avec chaque export explicitement défini. Par exemple, le jest.mock suivant devrait être mis à jour comme suit :

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

Pour plus de détails, veuillez vous référer à la section de l'API vi.mock.

Comportement d'Auto-Simulation ​

Contrairement à Jest, les modules simulés dans <root>/__mocks__ ne sont pas chargés à moins que vi.mock() ne soit appelé. Si vous avez besoin qu'ils soient simulés dans chaque test, comme dans Jest, vous pouvez les simuler dans setupFiles.

Importer l'original d'un package simulé ​

Si vous ne simulez qu'une partie d'un package, vous avez peut-être utilisé la fonction requireActual de Jest auparavant. Dans Vitest, vous devriez remplacer ces appels par vi.importActual.

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

Variables d'environnement (Envs) ​

Comme Jest, Vitest définit NODE_ENV sur test si elle n'était pas déjà définie. Vitest possède également un équivalent à JEST_WORKER_ID, nommé VITEST_POOL_ID (toujours inférieur ou égal à maxThreads). Si vous en dépendez, n'oubliez pas de le renommer. Vitest expose également VITEST_WORKER_ID qui est un ID unique d'un worker en cours d'exécution - ce nombre n'est pas affecté par maxThreads, et augmentera avec chaque worker créé.

Si vous utilisiez l'API replaceProperty dans Jest pour modifier les variables d'environnement, vous pouvez utiliser vi.stubEnv pour le faire dans Vitest.

Callback 'Done' ​

À partir de Vitest v0.10.0, la déclaration de tests par callback est dépréciée. Vous pouvez les réécrire pour utiliser des fonctions async/await, ou utiliser Promise pour imiter le style de callback.

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

Hooks ​

Les hooks beforeAll/beforeEach peuvent retourner une fonction de démontage (teardown) dans Vitest. Par conséquent, vous devrez peut-être réécrire vos déclarations de hooks si elles renvoient une valeur autre que undefined ou null.

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

Types ​

Vitest n'expose que peu de types dans l'espace de noms Vi, celui-ci étant principalement destiné à assurer la compatibilité avec les matchers. Il peut donc être nécessaire d'importer les types directement depuis vitest au lieu de se reposer sur l'espace de noms Vi.

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

De plus, Vitest utilise le type Args comme premier argument au lieu de Returns, comme illustré dans le diff.

Minuteurs (Timers) ​

Vitest ne supporte pas les timers legacy de Jest.

Vue Snapshots ​

Bien que cette fonctionnalité ne soit pas spécifique à Jest, si vous utilisiez auparavant Jest avec le preset vue-cli, vous devrez installer le paquet jest-serializer-vue et l'utiliser dans 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);

Dans le cas contraire, vos snapshots contiendront de nombreux caractères " échappés.

Pager
Page précédenteComparaison avec d'autres outils de test
Page suivanteErreurs courantes

Publié sous la licence MIT.

Copyright (c) 2024 Mithril Contributors

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

Publié sous la licence MIT.

Copyright (c) 2024 Mithril Contributors