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

Espacio de trabajo ​

Vitest proporciona soporte integrado para monorepositorios a través de un archivo de configuración de área de trabajo. Puedes crear un área de trabajo para definir la configuración de tus proyectos.

Definiendo un área de trabajo ​

Un área de trabajo debe tener un archivo vitest.workspace o vitest.projects en la raíz (en la misma carpeta que tu archivo de configuración, si tienes uno). Vitest soporta las extensiones ts, js y json para este archivo.

El archivo de configuración del área de trabajo debe tener una exportación predeterminada con una lista de archivos o patrones globales (glob patterns) que hagan referencia a tus proyectos. Por ejemplo, si tienes una carpeta llamada packages que contiene tus proyectos, puedes definir un área de trabajo con este archivo de configuración:

ts
export default ['packages/*'];

Vitest considerará cada carpeta dentro de packages como un proyecto separado, incluso si no tiene un archivo de configuración dentro de ella.

WARNING

Vitest no considerará la configuración raíz como un proyecto de área de trabajo (por lo que no ejecutará las pruebas especificadas en include) a menos que se especifique explícitamente en esta configuración.

También puedes referenciar proyectos mediante sus archivos de configuración:

ts
export default ['packages/*/vitest.config.{e2e,unit}.ts'];

Este patrón solo incluirá proyectos con un archivo vitest.config cuyo nombre incluya e2e o unit antes de la extensión.

WARNING

Si estás referenciando nombres de archivos con un patrón global, asegúrate de que tu archivo de configuración comience con vite.config o vitest.config. De lo contrario, Vitest lo ignorará.

También puedes definir proyectos con configuración en línea. El archivo de área de trabajo admite ambas sintaxis simultáneamente.

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

// defineWorkspace proporciona una buena experiencia para desarrolladores (DX) con sugerencias de tipo
export default defineWorkspace([
  'packages/*',
  {
    // agrega "extends" para combinar dos configuraciones
    extends: './vite.config.js',
    test: {
      include: ['tests/**/*.{browser}.test.{ts,js}'],
      // se recomienda asignar un nombre cuando se utilizan configuraciones en línea
      name: 'happy-dom',
      environment: 'happy-dom',
    },
  },
  {
    test: {
      include: ['tests/**/*.{node}.test.{ts,js}'],
      name: 'node',
      environment: 'node',
    },
  },
]);

WARNING

Todos los proyectos deben tener nombres únicos. De lo contrario, Vitest generará un error. Si no proporcionas un nombre dentro de la configuración en línea, Vitest asignará un número automáticamente. Si no proporcionas un nombre dentro de una configuración de proyecto definida con la sintaxis glob, Vitest utilizará el nombre del directorio de forma predeterminada.

Si no necesitas configuraciones en línea, puedes simplemente crear un pequeño archivo JSON en tu directorio raíz:

json
["packages/*"]

Los proyectos de área de trabajo no admiten todas las propiedades de configuración. Para mayor seguridad de tipos, utiliza el método defineProject en lugar del método defineConfig dentro de los archivos de configuración del proyecto:

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

export default defineProject({
  test: {
    environment: 'jsdom',
    // "reporters" no es compatible con una configuración de proyecto,
    // por lo que mostrará un error
    reporters: ['json'],
  },
});

Configuración ​

Ninguna de las opciones de configuración se hereda del archivo de configuración de nivel superior. Puedes crear un archivo de configuración compartido y fusionarlo con la configuración del proyecto manualmente:

ts
import { defineProject, mergeConfig } from 'vitest/config';
import configShared from '../vitest.shared.js';

export default mergeConfig(
  configShared,
  defineProject({
    test: {
      environment: 'jsdom',
    },
  })
);

Además, algunas de las opciones de configuración no están permitidas en una configuración de proyecto. Las más notables son:

  • coverage: la cobertura se realiza para todo el área de trabajo
  • reporters: solo se admiten los reporters de nivel raíz
  • resolveSnapshotPath: solo se respeta el resolver de nivel raíz
  • todas las demás opciones que no afectan a los ejecutores de pruebas

TIP

Todas las opciones de configuración que no son compatibles dentro de una configuración de proyecto tienen el signo * junto a ellas en la página "Config".

Cobertura ​

La cobertura para los proyectos de área de trabajo funciona automáticamente. Pero si tienes la opción all habilitada y utilizas extensiones no convencionales en algunos de tus proyectos, necesitarás tener un plugin que maneje esta extensión en tu archivo de configuración raíz.

Por ejemplo, si tienes un paquete que utiliza archivos Vue y tiene su propio archivo de configuración, pero algunos archivos no se importan en las pruebas, la cobertura fallará al analizar el uso de archivos sin usar. Esto se debe a que la cobertura se basa en la configuración raíz, no en la del proyecto.

Pager
AnteriorCaracterísticas
SiguienteInterfaz de Línea de Comandos

Publicado bajo la licencia MIT.

Copyright (c) 2024 Mithril Contributors

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

Publicado bajo la licencia MIT.

Copyright (c) 2024 Mithril Contributors