Skip to content

El mecanismo de descubrimiento de archivos de bun test determina qué archivos ejecutar como pruebas. Entender cómo funciona te ayuda a estructurar tus archivos de prueba efectivamente.

Lógica de descubrimiento por defecto

Por defecto, bun test busca recursivamente en el directorio del proyecto archivos que coincidan con patrones específicos:

  • *.test.{js|jsx|ts|tsx} - Archivos que terminan con .test.js, .test.jsx, .test.ts o .test.tsx
  • *_test.{js|jsx|ts|tsx} - Archivos que terminan con _test.js, _test.jsx, _test.ts o _test.tsx
  • *.spec.{js|jsx|ts|tsx} - Archivos que terminan con .spec.js, .spec.jsx, .spec.ts o .spec.tsx
  • *_spec.{js|jsx|ts|tsx} - Archivos que terminan con _spec.js, _spec.jsx, _spec.ts o _spec.tsx

Exclusiones

Por defecto, Bun test ignora:

  • Directorios node_modules
  • Directorios ocultos (los que comienzan con un punto .)
  • Archivos que no tienen extensiones tipo JavaScript (basado en los loaders disponibles)

Personalizar descubrimiento de pruebas

Argumentos de posición como filtros

Puedes filtrar qué archivos de prueba se ejecutan pasando argumentos de posición adicionales a bun test:

bash
bun test <filtro> <filtro> ...

Cualquier archivo de prueba con una ruta que contenga uno de los filtros se ejecutará. Estos filtros son coincidencias de subcadena simples, no patrones glob.

Por ejemplo, para ejecutar todas las pruebas en un directorio utils:

bash
bun test utils

Esto coincidiría con archivos como src/utils/string.test.ts y lib/utils/array_test.js.

Especificar rutas de archivo exactas

Para ejecutar un archivo específico en el ejecutor de pruebas, asegúrate de que la ruta comience con ./ o / para distinguirlo de un nombre de filtro:

bash
bun test ./test/specific-file.test.ts

Filtrar por nombre de prueba

Para filtrar pruebas por nombre en lugar de ruta de archivo, usa la bandera -t/--test-name-pattern con un patrón regex:

sh
# ejecutar todas las pruebas con "adición" en el nombre
bun test --test-name-pattern adición

El patrón se compara con una cadena concatenada del nombre de la prueba precedida por las etiquetas de todos sus bloques describe padre, separados por espacios. Por ejemplo, una prueba definida como:

math.test.ts
ts
describe("Matemáticas", () => {
  describe("operaciones", () => {
    test("debería sumar correctamente", () => {
      // ...
    });
  });
});

Se compararía con la cadena "Matemáticas operaciones debería sumar correctamente".

Cambiar el directorio raíz

Por defecto, Bun busca archivos de prueba comenzando desde el directorio de trabajo actual. Puedes cambiar esto con la opción root en tu bunfig.toml:

bunfig.toml
toml
[test]
root = "src"  # Solo escanear pruebas en el directorio src

Orden de ejecución

Las pruebas se ejecutan en el siguiente orden:

  1. Los archivos de prueba se ejecutan secuencialmente (no en paralelo)
  2. Dentro de cada archivo, las pruebas se ejecutan secuencialmente basándose en su orden de definición

Bun por www.bunjs.com.cn editar