Skip to content
Vitest 2
Main Navigation GuíaAPIConfiguraciónModo NavegadorAvanzado
2.1.9
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

Por qué Vitest

Empezando

Características

Área de Trabajo

Interfaz de Línea de Comandos

Filtrado de Pruebas

Informes

Cobertura

Capturas instantáneas

Mocking

Pruebas de Tipos

Interfaz de Usuario de Vitest

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

Profiling Test Performance

Mejora del rendimiento

En esta página

Primeros Pasos ​

Resumen ​

Vitest (pronunciado como "vi-test", similar a "vite" y "test") es un framework de pruebas de próxima generación impulsado por Vite.

Puedes aprender más sobre la razón detrás del proyecto en la sección Por qué Vitest.

Probando Vitest en línea ​

Puedes probar Vitest en línea en StackBlitz. Ejecuta Vitest directamente en el navegador; es casi idéntico a la configuración local, pero no requiere instalar nada en tu máquina.

Añadiendo Vitest a tu proyecto ​

Aprende a instalarlo con un video
bash
npm install -D vitest
bash
yarn add -D vitest
bash
pnpm add -D vitest
bash
bun add -D vitest

TIP

Vitest requiere Vite >=v5.0.0 y Node >=v18.0.0

Se recomienda instalar vitest en tu package.json utilizando uno de los métodos listados anteriormente. Sin embargo, si prefieres ejecutar vitest directamente, puedes usar npx vitest (la herramienta npx viene incluida con npm y Node.js).

La herramienta npx ejecutará el comando especificado. Por defecto, npx primero verificará si el comando existe en los ejecutables del proyecto local. Si no lo encuentra allí, npx buscará en el $PATH del sistema y lo ejecutará si está presente. Si el comando no se encuentra en ninguna de las ubicaciones, npx lo instalará temporalmente antes de la ejecución.

Escribiendo pruebas ​

Como ejemplo, escribiremos una prueba simple que verifica el resultado de una función que suma dos números.

js
// sum.js
export function sum(a, b) {
  return a + b;
}
js
// sum.test.js
import { expect, test } from 'vitest';
import { sum } from './sum.js';

test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});

TIP

Por defecto, los archivos de prueba deben contener ".test." o ".spec." en su nombre.

A continuación, para ejecutar la prueba, agrega la siguiente sección a tu package.json:

json
{
  "scripts": {
    "test": "vitest"
  }
}

Por último, ejecuta npm run test, yarn test o pnpm test, según tu gestor de paquetes, y Vitest mostrará este mensaje:

txt
✓ sum.test.js (1)
  ✓ adds 1 + 2 to equal 3

Test Files  1 passed (1)
     Tests  1 passed (1)
  Start at  02:15:44
  Duration  311ms

WARNING

Si estás usando Bun como tu gestor de paquetes, asegúrate de usar el comando bun run test en lugar de bun test, de lo contrario Bun ejecutará su propio ejecutor de pruebas.

Para aprender más sobre el uso de Vitest, consulta la sección API.

Configurando Vitest ​

Una de las principales ventajas de Vitest es su configuración unificada con Vite. Si está presente, vitest leerá tu archivo raíz vite.config.ts para usar los mismos plugins y configuración que tu aplicación Vite. Por ejemplo, tu configuración de resolve.alias y plugins de Vite funcionará sin configuración adicional. Si deseas una configuración diferente durante las pruebas, puedes:

  • Crear vitest.config.ts, que tendrá la mayor prioridad.
  • Pasar la opción --config a la CLI, por ejemplo, vitest --config ./path/to/vitest.config.ts.
  • Usar process.env.VITEST o la propiedad mode en defineConfig (se establecerá en test si no se sobrescribe) para aplicar condicionalmente una configuración diferente en vite.config.ts.

Vitest soporta las mismas extensiones para tu archivo de configuración que Vite: .js, .mjs, .cjs, .ts, .cts, .mts. Vitest no admite la extensión .json.

Si no estás usando Vite como tu herramienta de construcción, puedes configurar Vitest usando la propiedad test en tu archivo de configuración:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    // ...
  },
});

TIP

Incluso si no usas Vite, Vitest depende en gran medida de él para su cadena de transformación. Por esa razón, también puedes configurar cualquier propiedad descrita en la documentación de Vite.

Si ya estás usando Vite, añade la propiedad test en tu configuración de Vite. También necesitarás añadir una referencia a los tipos de Vitest usando una directiva de tres barras en la parte superior de tu archivo de configuración.

ts
/// <reference types="vitest" />
import { defineConfig } from 'vite';

export default defineConfig({
  test: {
    // ...
  },
});

El <reference types="vitest" /> dejará de ser compatible en Vitest 3, pero puedes empezar a migrar a vitest/config en Vitest 2.1:

ts
/// <reference types="vitest/config" />
import { defineConfig } from 'vite';

export default defineConfig({
  test: {
    // ... Especifica las opciones aquí.
  },
});

Consulta la lista de opciones de configuración en la Referencia de Configuración

WARNING

Si decides tener dos archivos de configuración separados para Vite y Vitest, asegúrate de definir las mismas opciones de Vite en tu archivo de configuración de Vitest, ya que lo sobrescribirá en lugar de extenderlo. También puedes usar el método mergeConfig de las entradas vite o vitest/config para fusionar la configuración de Vite con la de Vitest:

ts
import { defineConfig, mergeConfig } from 'vitest/config';
import viteConfig from './vite.config.mjs';

export default mergeConfig(
  viteConfig,
  defineConfig({
    test: {
      // ...
    },
  })
);
ts
import { defineConfig } from 'vite';
import Vue from '@vitejs/plugin-vue';

export default defineConfig({
  plugins: [Vue()],
});

Sin embargo, recomendamos usar el mismo archivo tanto para Vite como para Vitest, en lugar de crear dos archivos separados.

Soporte de Workspaces ​

Gestiona diferentes configuraciones de proyectos dentro del mismo proyecto con Vitest Workspaces. Puedes definir una lista de archivos y carpetas que definen tu espacio de trabajo en el archivo vitest.workspace. El archivo admite extensiones js/ts/json. Esta característica funciona muy bien con proyectos monorepo.

ts
import { defineWorkspace } from 'vitest/config';

export default defineWorkspace([
  // puedes usar una lista de patrones glob para definir tus espacios de trabajo
  // Vitest espera una lista de archivos de configuración
  // o directorios donde haya un archivo de configuración
  'packages/*',
  'tests/*/vitest.config.{e2e,unit}.ts',
  // incluso puedes ejecutar las mismas pruebas,
  // pero con diferentes configuraciones en el mismo proceso "vitest"
  {
    test: {
      name: 'happy-dom',
      root: './shared_tests',
      environment: 'happy-dom',
      setupFiles: ['./setup.happy-dom.ts'],
    },
  },
  {
    test: {
      name: 'node',
      root: './shared_tests',
      environment: 'node',
      setupFiles: ['./setup.node.ts'],
    },
  },
]);

Interfaz de línea de comandos ​

En un proyecto donde Vitest está instalado, puedes usar el binario vitest en tus scripts de npm, o ejecutarlo directamente con npx vitest. Aquí están los scripts de npm por defecto en un proyecto Vitest inicializado:

json
{
  "scripts": {
    "test": "vitest",
    "coverage": "vitest run --coverage"
  }
}

Para ejecutar las pruebas una vez sin observar los cambios en los archivos, usa vitest run. Puedes especificar opciones adicionales de CLI como --port o --https. Para una lista completa de opciones de CLI, ejecuta npx vitest --help en tu proyecto.

Aprende más sobre la Interfaz de línea de comandos

Instalación Automática de Dependencias ​

Vitest te solicitará que instales ciertas dependencias si aún no están instaladas. Puedes desactivar este comportamiento configurando la variable de entorno VITEST_SKIP_INSTALL_CHECKS=1.

Integraciones IDE ​

También proporcionamos una extensión oficial para Visual Studio Code para mejorar tu experiencia de prueba con Vitest.

Instalar desde VS Code Marketplace

Aprende más sobre las Integraciones IDE

Ejemplos ​

EjemploFuentePlayground
basicGitHubProbar en línea
fastifyGitHubProbar en línea
in-source-testGitHubProbar en línea
litGitHubProbar en línea
vueGitHubProbar en línea
markoGitHubProbar en línea
preactGitHubProbar en línea
reactGitHubProbar en línea
solidGitHubProbar en línea
svelteGitHubProbar en línea
sveltekitGitHubProbar en línea
profilingGitHubNo disponible
typecheckGitHubProbar en línea
workspaceGitHubProbar en línea

Proyectos que usan Vitest ​

  • unocss
  • unplugin-auto-import
  • unplugin-vue-components
  • vue
  • vite
  • vitesse
  • vitesse-lite
  • fluent-vue
  • vueuse
  • milkdown
  • gridjs-svelte
  • spring-easing
  • bytemd
  • faker
  • million
  • Vitamin
  • neodrag
  • svelte-multiselect
  • iconify
  • tdesign-vue-next
  • cz-git

Usando Commits no publicados ​

Cada commit en la rama principal y una solicitud de extracción (PR) con la etiqueta cr-tracked se publican en pkg.pr.new. Puedes instalarlo usando npm i https://pkg.pr.new/vitest@{commit}.

Si quieres probar tu propia modificación localmente, puedes compilarla y enlazarla tú mismo (se requiere pnpm):

bash
git clone https://github.com/vitest-dev/vitest.git
cd vitest
pnpm install
cd packages/vitest
pnpm run build
pnpm link --global # puedes usar tu gestor de paquetes preferido para este paso

Luego dirígete al proyecto donde estás usando Vitest y ejecuta pnpm link --global vitest (o el gestor de paquetes que hayas utilizado para enlazar vitest globalmente).

Comunidad ​

Si tienes preguntas o necesitas ayuda, dirígete a la comunidad en Discord y GitHub Discussions.

Pager
AnteriorPor qué Vitest
SiguienteCaracterísticas

Publicado bajo la licencia MIT.

Copyright (c) 2024 Mithril Contributors

https://v2.vitest.dev/guide/

Publicado bajo la licencia MIT.

Copyright (c) 2024 Mithril Contributors