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.
npx jest
yarn test
bun testIl n'est souvent pas nécessaire de modifier le code.
- Bun réécrit en interne les imports depuis
@jest/globalspour utiliser les équivalentsbun: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.
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.tsde test (si vous utilisezpreloaddans bunfig.toml) - N'importe quel fichier
.tsunique que TypeScript inclut dans votre compilation
/// <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 :
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.
[test]
preload = ["./happy-dom.ts"]Remplacez bail dans votre configuration Jest par l'option CLI --bail.
bun test --bail=3Remplacez collectCoverage par l'option CLI --coverage.
bun test --coverageRemplacez testTimeout par l'option CLI --test-timeout.
bun test --timeout 10000De 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.extensionsToTreatAsEsmhaste— Bun utilise ses propres source maps interneswatchman,watchPlugins,watchPathIgnorePatterns— utilisez--watchpour exécuter les tests en mode watchverbose— définissezlogLevel: "debug"dansbunfig.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 :