Skip to content
Vitest 3
Main Navigation Guía & APIConfiguraciónModo NavegadorAPI avanzada
3.2.0
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

Introducción

Por qué Vitest

Primeros pasos

Características

Configuración de Vitest

API

Referencia de la API de prueba

Funciones de Simulación

Vi

expect

expectTypeOf

assert

assertType

Guía

Interfaz de línea de comandos

Filtrado de Tests

Proyectos de prueba

Reportes

Cobertura

Instantáneas

Simulación (Mocking)

Paralelismo

Pruebas de Tipado

Interfaz de usuario de Vitest

Pruebas en el código fuente

Contexto de prueba

Anotaciones de prueba

Entorno de pruebas

Extender Matchers

Integraciones con IDE

Depuración

Errores comunes

Guía de migración

Migración a Vitest 3.0

Migración desde Jest

Rendimiento

Perfilado del rendimiento de las pruebas

Mejorando el Rendimiento

Modo Navegador

API Avanzadas

Comparaciones con otros ejecutores de pruebas

En esta página

Pruebas en el código fuente ​

Vitest ofrece la capacidad de ejecutar pruebas directamente dentro de tu código fuente, junto a la implementación, de manera similar a las pruebas de módulo de Rust.

Este enfoque permite que las pruebas compartan el mismo ámbito (closure) que las implementaciones, facilitando la prueba de estados privados sin necesidad de exportarlos. Además, proporciona un ciclo de retroalimentación más rápido durante el desarrollo.

WARNING

Esta guía detalla cómo escribir pruebas dentro de tu código fuente. Si necesitas escribir pruebas en archivos de prueba separados, consulta la guía "Escribir pruebas".

Configuración ​

Para comenzar, inserta un bloque if (import.meta.vitest) al final de tu archivo fuente y escribe tus pruebas dentro de él. Por ejemplo:

ts
// la implementación
export function add(...args: number[]) {
  return args.reduce((a, b) => a + b, 0);
}

// suites de prueba en el código fuente
if (import.meta.vitest) {
  const { it, expect } = import.meta.vitest;
  it('add', () => {
    expect(add()).toBe(0);
    expect(add(1)).toBe(1);
    expect(add(1, 2, 3)).toBe(6);
  });
}

Actualiza la configuración includeSource para que Vitest incluya los archivos de src/:

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

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'], 
  },
});

¡Con esto, ya puedes empezar a ejecutar tus pruebas!

bash
$ npx vitest

Compilación de producción ​

Para la compilación de producción, es necesario configurar las opciones define en tu archivo de configuración, lo que permitirá al empaquetador eliminar el código de prueba no utilizado. Por ejemplo, en Vite:

ts
/// <reference types="vitest/config" />

import { defineConfig } from 'vite'

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'],
  },
  define: { 
    'import.meta.vitest': 'undefined', 
  }, 
})

Otros empaquetadores ​

unbuild
ts
import { defineBuildConfig } from 'unbuild'

export default defineBuildConfig({
  replace: { 
    'import.meta.vitest': 'undefined', 
  }, 
  // other options
})

Más información: unbuild

Rollup
ts
import replace from '@rollup/plugin-replace'

export default {
  plugins: [
    replace({ 
      'import.meta.vitest': 'undefined', 
    }) 
  ],
  // other options
}

Más información: Rollup

TypeScript ​

Para obtener soporte de TypeScript para import.meta.vitest, añade vitest/importMeta a tu tsconfig.json:

json
{
  "compilerOptions": {
    "types": [
      "vitest/importMeta"
    ]
  }
}

Para ver el ejemplo completo, consulta examples/in-source-test.

Notas ​

Esta característica puede ser particularmente útil para:

  • Pruebas unitarias de funciones o utilidades de ámbito reducido.
  • Prototipado.
  • Aserciones en línea.

Se recomienda utilizar archivos de prueba separados para pruebas más complejas, como las de componentes o las pruebas E2E.

Pager
AnteriorInterfaz de usuario de Vitest
SiguienteContexto de prueba

Publicado bajo la licencia MIT.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/guide/in-source

Publicado bajo la licencia MIT.

Copyright (c) 2021-Present Vitest Team