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.
npx jest
yarn test
bun testMuitas vezes não há necessidade de alterações de código.
- Bun internamente reescreve imports de
@jest/globalspara usar os equivalentesbun: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.
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.tsna raiz do projeto - Seu arquivo de configuração
preload.tsde teste (se estiver usandopreloadno bunfig.toml) - Qualquer arquivo
.tsúnico que o TypeScript inclui em sua compilação
/// <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:
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.
[test]
preload = ["./happy-dom.ts"]Substitua bail em sua configuração do Jest pela flag CLI --bail.
bun test --bail=3Substitua collectCoverage pela flag CLI --coverage.
bun test --coverageSubstitua testTimeout pela flag CLI --test-timeout.
bun test --timeout 10000Muitas 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.extensionsToTreatAsEsmhaste— Bun usa seus próprios source maps internoswatchman,watchPlugins,watchPathIgnorePatterns— use--watchpara executar testes em modo watchverbose— definalogLevel: "debug"embunfig.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: