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.
npx jest
yarn test
bun testA menudo no hay necesidad de cambios en el código.
- Bun reescribe internamente las importaciones de
@jest/globalspara usar los equivalentes debun: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.
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.tsen la raíz de tu proyecto - Tu archivo de configuración
preload.tsde prueba (si usaspreloaden bunfig.toml) - Cualquier archivo
.tsque TypeScript incluya en tu compilación
/// <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:
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í.
[test]
preload = ["./happy-dom.ts"]Reemplaza bail en tu configuración de Jest con la bandera CLI --bail.
bun test --bail=3Reemplaza collectCoverage con la bandera CLI --coverage.
bun test --coverageReemplaza testTimeout con la bandera CLI --test-timeout.
bun test --timeout 10000Muchas 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.extensionsToTreatAsEsmhaste— Bun usa sus propios mapas de fuente internoswatchman,watchPlugins,watchPathIgnorePatterns— usa--watchpara ejecutar pruebas en modo observaciónverbose— establecelogLevel: "debug"enbunfig.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: