Skip to content

En muchos casos, el ejecutor de pruebas de Bun puede ejecutar suites de pruebas de Jest sin cambios en el código. Simplemente ejecuta bun test en lugar de npx jest, yarn test, etc.

sh
npx jest
yarn test
bun test

A menudo no hay necesidad de cambios en el código.

  • Bun reescribe internamente las importaciones de @jest/globals para usar los equivalentes de bun:test.
  • Si confías en Jest para inyectar test, expect, etc. como globales, Bun también lo hace.

Pero si prefieres cambiar a las importaciones de bun:test, también puedes hacerlo.

test.ts
ts
import { test, expect } from "@jest/globals"; 
import { test, expect } from "bun:test"; 

Desde Bun v1.2.19, puedes habilitar soporte de TypeScript para funciones de prueba globales con una sola directiva de triple barra. Esto hace que la migración desde Jest sea aún más fácil, ya que solo necesitas agregar la directiva una vez en todo tu proyecto:

Agrega esta directiva a un solo archivo en tu proyecto, como:

  • Un archivo global.d.ts en la raíz de tu proyecto
  • Tu archivo de configuración preload.ts de prueba (si usas preload en bunfig.toml)
  • Cualquier archivo .ts que TypeScript incluya en tu compilación
global.d.ts
ts
/// <reference types="bun-types/test-globals" />

Una vez agregado, todos los archivos de prueba en tu proyecto obtienen automáticamente soporte de TypeScript para los globales de Jest:

ts
describe("mi suite de pruebas", () => {
  test("debería funcionar", () => {
    expect(1 + 1).toBe(2);
  });

  beforeAll(() => {
    // código de configuración
  });

  afterEach(() => {
    // código de limpieza
  });
});

Bun implementa la gran mayoría de los matchers de Jest, pero la compatibilidad aún no es 100%. Consulta la tabla de compatibilidad completa en Documentación > Ejecutor de pruebas > Escribir pruebas.

Algunas características notables faltantes:

  • expect().toHaveReturned()

Si estás usando testEnvironment: "jsdom" para ejecutar tus pruebas en un entorno similar al navegador, debes seguir la guía Pruebas de DOM con Bun y happy-dom para inyectar APIs de navegador en el ámbito global. Esta guía se basa en happy-dom, que es una alternativa más ligera y rápida a jsdom.

Por el momento, jsdom no funciona en Bun debido a su uso interno de APIs de V8. Sigue el soporte aquí.

toml
[test]
preload = ["./happy-dom.ts"]

Reemplaza bail en tu configuración de Jest con la bandera CLI --bail.

sh
bun test --bail=3

Reemplaza collectCoverage con la bandera CLI --coverage.

sh
bun test --coverage

Reemplaza testTimeout con la bandera CLI --test-timeout.

sh
bun test --timeout 10000

Muchas otras banderas se vuelven irrelevantes u obsoletas al usar bun test.

  • transform — Bun admite TypeScript y JSX. Otros tipos de archivos se pueden configurar con Plugins.
  • extensionsToTreatAsEsm
  • haste — Bun usa sus propios mapas de fuente internos
  • watchman, watchPlugins, watchPathIgnorePatterns — usa --watch para ejecutar pruebas en modo observación
  • verbose — establece logLevel: "debug" en bunfig.toml

Las configuraciones que no se mencionan aquí no son compatibles o no tienen equivalente. Por favor presenta una solicitud de función si falta algo importante.


Ver también:

Bun por www.bunjs.com.cn editar