Skip to content

Em muitos casos, o runner de testes do Bun pode executar suítes de teste do Jest sem alterações de código. Basta executar bun test em vez de npx jest, yarn test, etc.

sh
npx jest
yarn test
bun test

Muitas vezes não há necessidade de alterações de código.

  • Bun internamente reescreve imports de @jest/globals para usar os equivalentes bun:test.
  • Se você está confiando no Jest para injetar test, expect, etc. como globais, Bun faz isso também.

Mas se você preferir mudar para os imports bun:test, pode fazer isso também.

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

Desde Bun v1.2.19, você pode habilitar suporte TypeScript para funções de teste globais com uma única diretiva triple-slash. Isso torna a migração do Jest ainda mais fácil, pois você só precisa adicionar a diretiva uma vez em todo o seu projeto:

Adicione esta diretiva a apenas um arquivo em seu projeto, como:

  • Um arquivo global.d.ts na raiz do projeto
  • Seu arquivo de configuração preload.ts de teste (se estiver usando preload no bunfig.toml)
  • Qualquer arquivo .ts único que o TypeScript inclui em sua compilação
global.d.ts
ts
/// <reference types="bun-types/test-globals" />

Depois de adicionado, todos os arquivos de teste em seu projeto automaticamente recebem suporte TypeScript para globais do Jest:

ts
describe("my test suite", () => {
  test("should work", () => {
    expect(1 + 1).toBe(2);
  });

  beforeAll(() => {
    // código de configuração
  });

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

O Bun implementa a grande maioria dos matchers do Jest, mas a compatibilidade ainda não é 100%. Consulte a tabela de compatibilidade completa em Docs > Test runner > Writing tests.

Alguns recursos notáveis ausentes:

  • expect().toHaveReturned()

Se você está usando testEnvironment: "jsdom" para executar seus testes em um ambiente semelhante ao navegador, siga o guia Teste de DOM com Bun e happy-dom para injetar APIs do navegador no escopo global. Este guia depende de happy-dom, que é uma alternativa mais leve e rápida ao jsdom.

No momento, jsdom não funciona no Bun devido ao seu uso interno de APIs V8. Acompanhe o suporte para isso aqui.

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

Substitua bail em sua configuração do Jest pela flag CLI --bail.

sh
bun test --bail=3

Substitua collectCoverage pela flag CLI --coverage.

sh
bun test --coverage

Substitua testTimeout pela flag CLI --test-timeout.

sh
bun test --timeout 10000

Muitas outras flags se tornam irrelevantes ou obsoletas ao usar bun test.

  • transform — Bun suporta TypeScript & JSX. Outros tipos de arquivo podem ser configurados com Plugins.
  • extensionsToTreatAsEsm
  • haste — Bun usa seus próprios source maps internos
  • watchman, watchPlugins, watchPathIgnorePatterns — use --watch para executar testes em modo watch
  • verbose — defina logLevel: "debug" em bunfig.toml

Configurações que não são mencionadas aqui não são suportadas ou não têm equivalente. Por favor, solicite um recurso se algo importante estiver faltando.


Veja também:

Bun by www.bunjs.com.cn edit