In vielen Fällen kann Buns Testrunner Jest-Testsuiten ohne Code-Änderungen ausführen. Führen Sie einfach bun test anstelle von npx jest, yarn test, etc. aus.
npx jest
yarn test
bun testEs sind oft keine Code-Änderungen erforderlich.
- Bun schreibt intern Importe von
@jest/globalsum, um diebun:test-Äquivalente zu verwenden. - Wenn Sie sich darauf verlassen, dass Jest
test,expect, etc. als Globals injiziert, macht Bun das auch.
Wenn Sie jedoch zu den bun:test-Importen wechseln möchten, können Sie das auch tun.
import { test, expect } from "@jest/globals";
import { test, expect } from "bun:test"; Seit Bun v1.2.19 können Sie TypeScript-Unterstützung für globale Testfunktionen mit einer einzigen Triple-Slash-Direktive aktivieren. Dies macht die Migration von Jest noch einfacher, da Sie die Direktive nur einmal in Ihrem gesamten Projekt hinzufügen müssen:
Fügen Sie diese Direktive zu nur einer Datei in Ihrem Projekt hinzu, wie zum Beispiel:
- Eine
global.d.ts-Datei im Projektstammverzeichnis - Ihre Test-
preload.ts-Setup-Datei (wenn Siepreloadin bunfig.toml verwenden) - Eine beliebige
.ts-Datei, die TypeScript in Ihre Kompilierung einschließt
/// <reference types="bun-types/test-globals" />Sobald dies hinzugefügt wurde, erhalten alle Testdateien in Ihrem Projekt automatisch TypeScript-Unterstützung für Jest-Globals:
describe("my test suite", () => {
test("should work", () => {
expect(1 + 1).toBe(2);
});
beforeAll(() => {
// setup code
});
afterEach(() => {
// cleanup code
});
});Bun implementiert die überwiegende Mehrheit von Jests Matchern, aber die Kompatibilität ist noch nicht 100%. Sehen Sie die vollständige Kompatibilitätstabelle unter Docs > Test runner > Writing tests.
Einige bemerkenswerte fehlende Features:
expect().toHaveReturned()
Wenn Sie testEnvironment: "jsdom" verwenden, um Ihre Tests in einer browserähnlichen Umgebung auszuführen, sollten Sie der Anleitung DOM-Tests mit Bun und happy-dom folgen, um Browser-APIs in den globalen Geltungsbereich zu injizieren. Diese Anleitung verwendet happy-dom, das eine schlankere und schnellere Alternative zu jsdom ist.
Derzeit funktioniert jsdom nicht in Bun aufgrund seiner internen Verwendung von V8-APIs. Verfolgen Sie die Unterstützung dafür hier.
[test]
preload = ["./happy-dom.ts"]Ersetzen Sie bail in Ihrer Jest-Konfiguration durch das --bail-CLI-Flag.
bun test --bail=3Ersetzen Sie collectCoverage durch das --coverage-CLI-Flag.
bun test --coverageErsetzen Sie testTimeout durch das --test-timeout-CLI-Flag.
bun test --timeout 10000Viele andere Flags werden irrelevant oder veraltet bei Verwendung von bun test.
transform— Bun unterstützt TypeScript & JSX. Andere Dateitypen können mit Plugins konfiguriert werden.extensionsToTreatAsEsmhaste— Bun verwendet seine eigenen internen Source Mapswatchman,watchPlugins,watchPathIgnorePatterns— verwenden Sie--watch, um Tests im Watch-Modus auszuführenverbose— setzen SielogLevel: "debug"inbunfig.toml
Einstellungen, die hier nicht erwähnt werden, werden nicht unterstützt oder haben kein Äquivalent. Bitte reichen Sie eine Feature-Anfrage ein, wenn etwas Wichtiges fehlt.
Siehe auch: