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

Espacio de trabajo ​

Proyecto de ejemplo

GitHub - Probar en línea

Vitest ofrece la posibilidad de definir múltiples configuraciones de proyecto dentro de un único proceso de Vitest. Esta característica es especialmente útil para configuraciones de monorepos, pero también puede emplearse para ejecutar pruebas con distintas configuraciones, como resolve.alias, plugins o test.browser, entre otras.

Definición de un espacio de trabajo ​

Un espacio de trabajo debe incluir un archivo vitest.workspace o vitest.projects en su directorio raíz (ubicado en la misma carpeta que su archivo de configuración raíz o directorio de trabajo, si este último no existe). Vitest admite las extensiones ts, js y json para este archivo.

CONVENCIÓN DE NOMBRES

Tenga en cuenta que esta característica se denomina workspace, no workspaces (sin "s" al final).

El archivo de configuración del espacio de trabajo debe tener una exportación predeterminada con una lista de archivos o patrones glob que hagan referencia a sus proyectos. Por ejemplo, si tiene una carpeta llamada packages que contiene sus proyectos, puede definir un espacio de trabajo con este archivo de configuración:

ts
export default ['packages/*'];

Vitest tratará cada carpeta en packages como un proyecto separado, incluso si no contiene un archivo de configuración propio. A partir de Vitest 2.1, si este patrón glob coincide con algún archivo, se considerará una configuración de Vitest, aunque no incluya vitest en su nombre.

WARNING

Vitest no considera el archivo vitest.config raíz como un proyecto de espacio de trabajo a menos que se especifique explícitamente en la configuración del espacio de trabajo. En consecuencia, la configuración raíz solo influirá en opciones globales como reporters y coverage.

También puede hacer referencia a 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 que contenga e2e o unit antes de la extensión.

También es posible definir proyectos utilizando configuración en línea. El archivo del espacio de trabajo admite ambas sintaxis simultáneamente.

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

// defineWorkspace ofrece una mejor experiencia de desarrollador (DX) con sugerencias de tipos
export default defineWorkspace([
  // incluye cada carpeta y archivo dentro de la carpeta `packages`
  'packages/*',
  {
    // usa "extends" para fusionar dos configuraciones
    extends: './vite.config.js',
    test: {
      include: ['tests/**/*.{browser}.test.{ts,js}'],
      // se recomienda especificar un nombre cuando se usan 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 se proporciona un nombre en la configuración en línea, Vitest asignará un número. Para las configuraciones de proyecto definidas con sintaxis de comodín, Vitest utilizará por defecto la propiedad "name" del archivo package.json más cercano o, si no existe, el nombre de la carpeta.

Si no utiliza configuraciones en línea, puede crear un pequeño archivo JSON en su directorio raíz:

json
["packages/*"]

Los proyectos del espacio de trabajo no admiten todas las propiedades de configuración. Para una mejor seguridad de tipos, utilice el método defineProject en lugar de defineConfig dentro de los archivos de configuración del proyecto:

ts
// @errors: 2769
import { defineProject } from 'vitest/config';

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

Ejecución de pruebas ​

Para ejecutar pruebas dentro del espacio de trabajo, defina un script en su package.json raíz:

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

Ahora las pruebas pueden ejecutarse usando su gestor de paquetes:

bash
npm run test
bash
yarn test
bash
pnpm run test
bash
bun test

Si necesita ejecutar pruebas solo dentro de un único proyecto, use la opción CLI --project:

bash
npm run test --project e2e
bash
yarn test --project e2e
bash
pnpm run test --project e2e
bash
bun test --project e2e

TIP

La opción CLI --project se puede usar varias veces para filtrar múltiples proyectos:

bash
npm run test --project e2e --project unit
bash
yarn test --project e2e --project unit
bash
pnpm run test --project e2e --project unit
bash
bun test --project e2e --project unit

Configuración ​

Ninguna de las opciones de configuración se hereda del archivo de configuración de nivel raíz. Puede crear un archivo de configuración compartido y fusionarlo con la configuración del proyecto por su cuenta:

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

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

A nivel de defineWorkspace, puede usar la opción extends para heredar de su configuración raíz. Todas las opciones se combinarán.

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

export default defineWorkspace([
  {
    extends: './vitest.config.ts',
    test: {
      name: 'unit',
      include: ['**/*.unit.test.ts'],
    },
  },
  {
    extends: './vitest.config.ts',
    test: {
      name: 'integration',
      include: ['**/*.integration.test.ts'],
    },
  },
]);

Algunas de las opciones de configuración no están permitidas en la configuración de un proyecto. Entre las más relevantes:

  • coverage: la cobertura se realiza para todo el espacio de trabajo
  • reporters: solo se permiten los reporteros de nivel raíz
  • resolveSnapshotPath: solo se aplica el resolvedor 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 la configuración de un proyecto están marcadas con un icono * en la guía "Config".

Pager
AnteriorCaracterísticas
SiguienteInterfaz de Línea de Comandos

Publicado bajo la licencia MIT.

Copyright (c) 2024 Mithril Contributors

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

Publicado bajo la licencia MIT.

Copyright (c) 2024 Mithril Contributors