많은 경우 Bun 의 테스트 러너는 코드 변경 없이 Jest 테스트 스위트를 실행할 수 있습니다. npx jest, yarn test 대신 bun test 를 실행하세요.
npx jest
yarn test
bun test코드 변경이 필요하지 않은 경우가 많습니다.
- Bun 은 내부적으로
@jest/globals의 import 를 재작성하여bun:test동등물로 사용합니다. - Jest 가
test,expect등을 전역으로 주입하는 데 의존하는 경우 Bun 도 그렇게 합니다.
하지만 bun:test import 로 전환하는 것이 더 나을 수 있습니다.
import { test, expect } from "@jest/globals";
import { test, expect } from "bun:test"; Bun v1.2.19 부터 단일 triple-slash 지시어로 전역 테스트 함수에 대한 TypeScript 지원을 활성화할 수 있습니다. 이는 Jest 에서의 마이그레이션을 훨씬 쉽게 만듭니다. 프로젝트 전체에서 한 번만 지시어를 추가하면 되기 때문입니다.
이 지시어를 프로젝트의 단일 파일 에 추가하세요. 예를 들어:
- 프로젝트 루트의
global.d.ts파일 - 테스트
preload.ts설정 파일 (bunfig.toml 에서preload사용 시) - TypeScript 가 컴파일에 포함하는 단일
.ts파일
/// <reference types="bun-types/test-globals" />추가하면 프로젝트의 모든 테스트 파일에서 Jest 전역에 대한 TypeScript 지원을 자동으로 얻습니다.
describe("my test suite", () => {
test("should work", () => {
expect(1 + 1).toBe(2);
});
beforeAll(() => {
// 설정 코드
});
afterEach(() => {
// 정리 코드
});
});Bun 은 Jest 의 매처 대부분을 구현하지만 아직 100% 호환되지는 않습니다. 문서 > 테스트 러너 > 테스트 작성 의 전체 호환성 표를 참조하세요.
주목할 만한 일부 누락된 기능:
expect().toHaveReturned()
테스트를 브라우저와 유사한 환경에서 실행하기 위해 testEnvironment: "jsdom" 을 사용하는 경우 Bun 과 happy-dom 으로 DOM 테스트 가이드를 따라 브라우저 API 를 전역 범위에 주입하세요. 이 가이드는 jsdom 보다 더 가볍고 빠른 대안인 happy-dom 을 사용합니다.
현재 jsdom 은 V8 API 의 내부 사용으로 인해 Bun 에서 작동하지 않습니다. 여기 에서 지원 현황을 추적하세요.
[test]
preload = ["./happy-dom.ts"]Jest config 의 bail 을 --bail CLI 플래그로 교체하세요.
bun test --bail=3collectCoverage 를 --coverage CLI 플래그로 교체하세요.
bun test --coveragetestTimeout 을 --test-timeout CLI 플래그로 교체하세요.
bun test --timeout 10000다른 많은 설정은 bun test 를 사용할 때 관련이 없거나 더 이상 필요하지 않습니다.
transform— Bun 은 TypeScript & JSX 를 지원합니다. 다른 파일 유형은 플러그인 으로 구성할 수 있습니다.extensionsToTreatAsEsmhaste— Bun 은 자체 내부 소스 맵을 사용합니다.watchman,watchPlugins,watchPathIgnorePatterns—--watch를 사용하여 watch 모드에서 테스트 실행verbose—bunfig.toml에서logLevel: "debug"설정
여기에 언급되지 않은 설정은 지원되지 않거나 동등한 기능이 없습니다. 중요한 기능이 누락된 경우 기능 요청 을 제출하세요.
참고: