Skip to content

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.

sh
npx jest
yarn test
bun test

Spesso non c'è bisogno di modifiche al codice.

  • Bun internamente riscrive gli import da @jest/globals per usare gli equivalenti bun: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.

test.ts
ts
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.ts nella radice del progetto
  • Il tuo file di setup preload.ts dei test (se usi preload in bunfig.toml)
  • Qualsiasi singolo file .ts che TypeScript include nella tua compilazione
global.d.ts
ts
/// <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:

ts
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.

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

Sostituisci bail nella tua configurazione Jest con il flag CLI --bail.

sh
bun test --bail=3

Sostituisci collectCoverage con il flag CLI --coverage.

sh
bun test --coverage

Sostituisci testTimeout con il flag CLI --test-timeout.

sh
bun test --timeout 10000

Molti 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.
  • extensionsToTreatAsEsm
  • haste — Bun usa le sue mappe sorgente interne
  • watchman, watchPlugins, watchPathIgnorePatterns — usa --watch per eseguire i test in modalità watch
  • verbose — imposta logLevel: "debug" in bunfig.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:

Bun a cura di www.bunjs.com.cn