Skip to content
Vitest 0
Main Navigation GuíaAPIConfiguraciónAvanzado
1.6.1
0.34.6

Español

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

Español

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

Apariencia

Sidebar Navigation

Guía

Por qué Vitest

Empezando

Características

Espacio de trabajo

Interfaz de Línea de Comandos

Filtrado de Pruebas

Cobertura

Capturas instantáneas

Mocking

Pruebas de Tipos

Interfaz de Usuario de Vitest

Modo Navegador (experimental)

Pruebas en el código fuente

Contexto de prueba

Entorno de Pruebas

Extender Matchers

Integración con IDEs

Depuración

Comparaciones con otros Ejecutores de Pruebas

Guía de Migración

Errores frecuentes

API

Referencia de la API de pruebas

Funciones Mock

Vi

expect

expectTypeOf

assertType

Configuración

Configuración de Vitest

En esta página

Guía de Migración ​

Migración desde Jest ​

Vitest ha sido diseñado con una API compatible con Jest, con el objetivo de simplificar al máximo la migración desde Jest. A pesar de estos esfuerzos, es posible que encuentres las siguientes diferencias:

Globales por defecto ​

Jest tiene su API de globales habilitada por defecto. Vitest no. Puedes habilitar los globales a través de la configuración globals o actualizar tu código para usar importaciones desde el módulo vitest.

Si decides mantener los globales deshabilitados, ten en cuenta que bibliotecas comunes como testing-library no realizarán la limpieza automática del DOM.

Simulaciones de Módulos ​

Cuando se simula un módulo en Jest, el valor que devuelve el argumento de la función de fábrica es la exportación por defecto. En Vitest, el argumento de la función de fábrica debe devolver un objeto con cada exportación definida explícitamente. Por ejemplo, el siguiente jest.mock debería actualizarse de la siguiente manera:

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

Para más detalles, consulta la sección de la API vi.mock.

Comportamiento del Auto-Mocking ​

A diferencia de Jest, los módulos simulados en <root>/__mocks__ no se cargan a menos que se llame a vi.mock(). Si necesitas que se simulen en cada test, como en Jest, puedes simularlos dentro de setupFiles.

Importando el original de un paquete simulado ​

Si solo estás simulando parcialmente un paquete, es posible que hayas usado previamente la función requireActual de Jest. En Vitest, debes reemplazar estas llamadas con vi.importActual.

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

Variables de Entorno ​

Al igual que Jest, Vitest establece NODE_ENV a test si no se había establecido previamente. Vitest también tiene una contraparte para JEST_WORKER_ID llamada VITEST_POOL_ID (siempre menor o igual a maxThreads). Si dependes de ella, no olvides renombrarla. Vitest también expone VITEST_WORKER_ID, que es un ID único de un worker en ejecución. Este número no se ve afectado por maxThreads y aumentará con cada worker creado.

Si quieres modificar las variables de entorno, y usabas la replaceProperty API en Jest, puedes usar vi.stubEnv para hacerlo también en Vitest.

Callback 'done' ​

Desde Vitest v0.10.0, el estilo de callback para declarar pruebas está obsoleto. Puedes reescribirlas para usar funciones async/await, o usar Promise para simular el estilo de callback.

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

Hooks ​

Los hooks beforeAll/beforeEach pueden devolver una función de limpieza en Vitest. Debido a esto, es posible que necesites reescribir tus declaraciones de hooks si devuelven algo que no sea undefined o null:

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

Tipos ​

Vitest no expone muchos tipos en el espacio de nombres Vi. Este espacio de nombres existe principalmente para la compatibilidad con los matchers, por lo que es posible que necesites importar los tipos directamente desde vitest en lugar de depender del espacio de nombres Vi:

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

Además, Vitest tiene el tipo Args como primer argumento en lugar de Returns, como puedes ver en el diff.

Temporizadores ​

Vitest no soporta los temporizadores heredados de Jest.

Instantáneas de Vue ​

Esta no es una característica específica de Jest, pero si previamente estabas usando Jest con el preset vue-cli, necesitarás instalar el paquete jest-serializer-vue y usarlo dentro de 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);

De lo contrario, tus instantáneas tendrán muchos caracteres de comillas escapadas.

Pager
AnteriorComparaciones con otros Ejecutores de Pruebas
SiguienteErrores frecuentes

Publicado bajo la licencia MIT.

Copyright (c) 2024 Mithril Contributors

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

Publicado bajo la licencia MIT.

Copyright (c) 2024 Mithril Contributors