Skip to content

많은 경우 Bun 의 테스트 러너는 코드 변경 없이 Jest 테스트 스위트를 실행할 수 있습니다. npx jest, yarn test 대신 bun test 를 실행하세요.

sh
npx jest
yarn test
bun test

코드 변경이 필요하지 않은 경우가 많습니다.

  • Bun 은 내부적으로 @jest/globals 의 import 를 재작성하여 bun:test 동등물로 사용합니다.
  • Jest 가 test, expect 등을 전역으로 주입하는 데 의존하는 경우 Bun 도 그렇게 합니다.

하지만 bun:test import 로 전환하는 것이 더 나을 수 있습니다.

ts
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 파일
ts
/// <reference types="bun-types/test-globals" />

추가하면 프로젝트의 모든 테스트 파일에서 Jest 전역에 대한 TypeScript 지원을 자동으로 얻습니다.

ts
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 에서 작동하지 않습니다. 여기 에서 지원 현황을 추적하세요.

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

Jest config 의 bail--bail CLI 플래그로 교체하세요.

sh
bun test --bail=3

collectCoverage--coverage CLI 플래그로 교체하세요.

sh
bun test --coverage

testTimeout--test-timeout CLI 플래그로 교체하세요.

sh
bun test --timeout 10000

다른 많은 설정은 bun test 를 사용할 때 관련이 없거나 더 이상 필요하지 않습니다.

  • transform — Bun 은 TypeScript & JSX 를 지원합니다. 다른 파일 유형은 플러그인 으로 구성할 수 있습니다.
  • extensionsToTreatAsEsm
  • haste — Bun 은 자체 내부 소스 맵을 사용합니다.
  • watchman, watchPlugins, watchPathIgnorePatterns--watch 를 사용하여 watch 모드에서 테스트 실행
  • verbosebunfig.toml 에서 logLevel: "debug" 설정

여기에 언급되지 않은 설정은 지원되지 않거나 동등한 기능이 없습니다. 중요한 기능이 누락된 경우 기능 요청 을 제출하세요.


참고:

Bun by www.bunjs.com.cn 편집