In molti casi, il test runner di Bun può eseguire suite di test Jest senza modifiche al codice. Esegui semplicemente bun test invece di npx jest, yarn test, ecc.
npx jest
yarn test
bun testSpesso non c'è bisogno di modifiche al codice.
- Bun internamente riscrive gli import da
@jest/globalsper usare gli equivalentibun:test. - Se ti affidi a Jest per iniettare
test,expect, ecc. come globali, Bun lo fa anche lui.
Ma se preferisci passare agli import bun:test, puoi farlo anche quello.
import { test, expect } from "@jest/globals";
import { test, expect } from "bun:test"; Dalla versione Bun v1.2.19, puoi abilitare il supporto TypeScript per le funzioni di test globali con una singola direttiva triple-slash. Questo rende la migrazione da Jest ancora più facile poiché devi solo aggiungere la direttiva una volta nell'intero progetto:
Aggiungi questa direttiva a un solo file nel tuo progetto, come:
- Un file
global.d.tsnella radice del progetto - Il tuo file di setup
preload.tsdei test (se usipreloadin bunfig.toml) - Qualsiasi singolo file
.tsche TypeScript include nella tua compilazione
/// <reference types="bun-types/test-globals" />Una volta aggiunta, tutti i file di test nel tuo progetto ottengono automaticamente il supporto TypeScript per i globali Jest:
describe("la mia suite di test", () => {
test("dovrebbe funzionare", () => {
expect(1 + 1).toBe(2);
});
beforeAll(() => {
// codice di setup
});
afterEach(() => {
// codice di cleanup
});
});Bun implementa la stragrande maggioranza dei matcher di Jest, ma la compatibilità non è ancora al 100%. Fai riferimento alla tabella di compatibilità completa in Docs > Test runner > Writing tests.
Alcune funzionalità mancanti degne di nota:
expect().toHaveReturned()
Se stai usando testEnvironment: "jsdom" per eseguire i tuoi test in un ambiente simile al browser, dovresti seguire la guida Test DOM con Bun e happy-dom per iniettare le API del browser nell'ambito globale. Questa guida si affida a happy-dom, che è un'alternativa più leggera e veloce a jsdom.
Al momento jsdom non funziona in Bun a causa del suo uso interno delle API V8. Segui il supporto per esso qui.
[test]
preload = ["./happy-dom.ts"]Sostituisci bail nella tua configurazione Jest con il flag CLI --bail.
bun test --bail=3Sostituisci collectCoverage con il flag CLI --coverage.
bun test --coverageSostituisci testTimeout con il flag CLI --test-timeout.
bun test --timeout 10000Molti altri flag diventano irrilevanti o obsoleti quando si usa bun test.
transform— Bun supporta TypeScript e JSX. Altri tipi di file possono essere configurati con Plugins.extensionsToTreatAsEsmhaste— Bun usa le sue mappe sorgente internewatchman,watchPlugins,watchPathIgnorePatterns— usa--watchper eseguire i test in modalità watchverbose— impostalogLevel: "debug"inbunfig.toml
Le impostazioni che non sono menzionate qui non sono supportate o non hanno un equivalente. Per favore segnala una richiesta di funzionalità se manca qualcosa di importante.
Vedi anche: