Skip to content

Dans de nombreux cas, le runner de tests de Bun peut exécuter des suites de tests Jest sans modifications de code. Exécutez simplement bun test au lieu de npx jest, yarn test, etc.

sh
npx jest
yarn test
bun test

Il n'est souvent pas nécessaire de modifier le code.

  • Bun réécrit en interne les imports depuis @jest/globals pour utiliser les équivalents bun:test.
  • Si vous comptez sur Jest pour injecter test, expect, etc. comme globales, Bun le fait aussi.

Mais si vous préférez passer aux imports bun:test, vous pouvez le faire aussi.

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

Depuis Bun v1.2.19, vous pouvez activer le support TypeScript pour les fonctions de test globales avec une seule directive triple-slash. Cela rend la migration depuis Jest encore plus facile car vous n'avez besoin d'ajouter la directive qu'une seule fois dans tout votre projet :

Ajoutez cette directive à un seul fichier dans votre projet, tel que :

  • Un fichier global.d.ts à la racine de votre projet
  • Votre fichier de configuration preload.ts de test (si vous utilisez preload dans bunfig.toml)
  • N'importe quel fichier .ts unique que TypeScript inclut dans votre compilation
ts
/// <reference types="bun-types/test-globals" />

Une fois ajoutée, tous les fichiers de test de votre projet obtiennent automatiquement le support TypeScript pour les globales Jest :

ts
describe("ma suite de tests", () => {
  test("devrait fonctionner", () => {
    expect(1 + 1).toBe(2);
  });

  beforeAll(() => {
    // code de configuration
  });

  afterEach(() => {
    // code de nettoyage
  });
});

Bun implémente la grande majorité des matchers de Jest, mais la compatibilité n'est pas encore à 100%. Consultez le tableau de compatibilité complet à Docs > Test runner > Writing tests.

Quelques fonctionnalités manquantes notables :

  • expect().toHaveReturned()

Si vous utilisez testEnvironment: "jsdom" pour exécuter vos tests dans un environnement similaire à un navigateur, vous devriez suivre le guide Tests DOM avec Bun et happy-dom pour injecter les API de navigateur dans la portée globale. Ce guide s'appuie sur happy-dom, qui est une alternative plus légère et plus rapide à jsdom.

Pour le moment, jsdom ne fonctionne pas dans Bun en raison de son utilisation interne des API V8. Suivez le support ici.

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

Remplacez bail dans votre configuration Jest par l'option CLI --bail.

sh
bun test --bail=3

Remplacez collectCoverage par l'option CLI --coverage.

sh
bun test --coverage

Remplacez testTimeout par l'option CLI --test-timeout.

sh
bun test --timeout 10000

De nombreuses autres options deviennent non pertinentes ou obsolètes lors de l'utilisation de bun test.

  • transform — Bun prend en charge TypeScript et JSX. D'autres types de fichiers peuvent être configurés avec Plugins.
  • extensionsToTreatAsEsm
  • haste — Bun utilise ses propres source maps internes
  • watchman, watchPlugins, watchPathIgnorePatterns — utilisez --watch pour exécuter les tests en mode watch
  • verbose — définissez logLevel: "debug" dans bunfig.toml

Les paramètres qui ne sont pas mentionnés ici ne sont pas pris en charge ou n'ont pas d'équivalent. Veuillez créer une demande de fonctionnalité si quelque chose d'important manque.


Voir aussi :

Bun édité par www.bunjs.com.cn