Во многих случаях тестовый раннер Bun может запускать наборы тестов Jest без изменений кода. Просто запустите bun test вместо npx jest, yarn test и т.д.
npx jest
yarn test
bun testИзменения кода часто не требуются.
- Bun внутренне переписывает импорты из
@jest/globalsдля использования эквивалентовbun:test. - Если вы полагаетесь на Jest для внедрения
test,expectи т.д. как глобалов, Bun тоже это делает.
Но если вы предпочитаете переключиться на импорты bun:test, вы можете сделать и это.
import { test, expect } from "@jest/globals";
import { test, expect } from "bun:test"; Начиная с Bun v1.2.19, вы можете включить поддержку TypeScript для глобальных тестовых функций одной директивой triple-slash. Это делает миграцию с Jest ещё проще, поскольку вам нужно добавить директиву только один раз во всём проекте:
Добавьте эту директиву только в один файл в вашем проекте, например:
- Файл
global.d.tsв корне вашего проекта - Ваш тестовый файл настройки
preload.ts(если используетеpreloadв bunfig.toml) - Любой одиночный
.tsфайл, который TypeScript включает в вашу компиляцию
/// <reference types="bun-types/test-globals" />После добавления все тестовые файлы в вашем проекте автоматически получат поддержку TypeScript для глобалов Jest:
describe("моя тестовая группа", () => {
test("должно работать", () => {
expect(1 + 1).toBe(2);
});
beforeAll(() => {
// код настройки
});
afterEach(() => {
// код очистки
});
});Bun реализует подавляющее большинство матчеров Jest, но совместимость ещё не 100%. Обратитесь к полной таблице совместимости в Документация > Тестирование > Написание тестов.
Некоторые примечательные отсутствующие функции:
expect().toHaveReturned()
Если вы используете testEnvironment: "jsdom" для запуска тестов в среде, подобной браузеру, вам следует следовать руководству Тестирование DOM с Bun и happy-dom для внедрения браузерных API в глобальную область видимости. Это руководство полагается на happy-dom, который является более лёгкой и быстрой альтернативой jsdom.
В настоящее время jsdom не работает в Bun из-за его внутреннего использования API V8. Отслеживайте поддержку здесь.
[test]
preload = ["./happy-dom.ts"]Замените bail в вашей конфигурации Jest на флаг CLI --bail.
bun test --bail=3Замените collectCoverage на флаг CLI --coverage.
bun test --coverageЗамените testTimeout на флаг CLI --test-timeout.
bun test --timeout 10000Многие другие флаги становятся неактуальными или устаревшими при использовании bun test.
transform— Bun поддерживает TypeScript и JSX. Другие типы файлов можно настроить с помощью Плагинов.extensionsToTreatAsEsmhaste— Bun использует свои собственные внутренние карты источниковwatchman,watchPlugins,watchPathIgnorePatterns— используйте--watchдля запуска тестов в режиме наблюденияverbose— установитеlogLevel: "debug"вbunfig.toml
Настройки, которые здесь не упомянуты, не поддерживаются или не имеют эквивалента. Пожалуйста, оставьте запрос функции, если что-то важное отсутствует.
Смотрите также: