Jest 설정 생성기

jest 설정
다음

스택을 고르세요, TypeScript, React, Node 백엔드, Svelte, 그러면 생성기가 올바른 트랜스포머, 모듈 매퍼, 테스트 환경, 커버리지 임계값이 있는 jest.config.js를 출력합니다. 사람들이 잊는 모든 옵션을 포함합니다: CSS/이미지용 moduleNameMapper, setupFilesAfterEach, node_modulesdisttestPathIgnorePatterns.

Jest 설정 만드는 방법

  1. 1

    스택 선택

    TypeScript, React, Vue, Svelte, 순수 Node, 또는 혼합. 각각 올바른 트랜스포머를 미리 채웁니다.

  2. 2

    테스트 환경 선택

    브라우저 코드는 jsdom, 백엔드는 node, 또는 커스텀 환경.

  3. 3

    기능 토글

    커버리지 임계값, 스냅샷 테스트, 목 경로, 커스텀 setup 파일, transform ignore 패턴.

  4. 4

    설정 다운로드

    출력은 주석이 달린 `jest.config.js` 또는 `jest.config.ts`이며, `package.json`에 추가할 npm 스크립트도 함께 제공됩니다.

샘플 출력: React + TypeScript 프로젝트

module.exports = {
  preset: "ts-jest",
  testEnvironment: "jsdom",
  setupFilesAfterEach: ["<rootDir>/jest.setup.ts"],
  moduleNameMapper: {
    "\\.(css|less|scss|sass)$": "identity-obj-proxy",
    "\\.(jpg|jpeg|png|gif|svg)$": "<rootDir>/__mocks__/fileMock.js",
    "^@/(.*)$": "<rootDir>/src/$1"
  },
  testPathIgnorePatterns: ["/node_modules/", "/dist/", "/build/"],
  transform: {
    "^.+\\.tsx?$": ["ts-jest", { tsconfig: "tsconfig.test.json" }]
  },
  collectCoverageFrom: [
    "src/**/*.{ts,tsx}",
    "!src/**/*.d.ts",
    "!src/**/*.stories.*"
  ],
  coverageThreshold: {
    global: { branches: 80, functions: 80, lines: 85, statements: 85 }
  }
};

결정 가이드: 어떤 환경?

코드가 실행되는 곳… 사용
브라우저 (DOM, window) jsdom (또는 속도를 위한 @happy-dom/jest-environment)
Node 서버 node
서비스 워커 커스텀 환경, node 베이스
React Native react-native 프리셋

트랜스포머 치트시트

소스 타입 트랜스포머
TypeScript ts-jest 또는 @swc/jest
Babel 컴파일 JSX babel-jest (기본)
Vue SFC @vue/vue3-jest + babel-jest
Svelte svelte-jester
정적 이미지 moduleNameMapper의 수동 목

커버리지 임계값: 어떤 숫자?

  • 핵심 경로 / 라이브러리: lines 90%+, branches 85%+.
  • 기능 팀: lines 80%, branches 70%.
  • 빠르게 바뀌는 UI: lines 60-70%; 비즈니스 로직은 더 높게, 레이아웃은 더 낮게.
  • 프로토타입: 임계값을 완전히 끄세요; 커버리지를 게이트가 아니라 숫자로 추적하세요.

흔한 실수

  • 순수 Node 코드에 jsdom 사용. 테스트가 느려지고 얻는 게 없습니다, node로 전환하세요.
  • ESM 패키지용 transformIgnorePatterns 누락. 최신 패키지는 ESM 전용으로 배포됩니다; Jest에 이를 변환하라고 알려야 합니다.
  • mapper 없이 이미지/CSS 목. 테스트에서 .png를 import하면 목 모듈 없이는 Jest가 넘어집니다.
  • clearMocks를 false로 설정. 목이 테스트 간에 새고 실패가 비결정적이 됩니다. 기본으로 켜세요.

자주 묻는 질문

SWC(@swc/jest)는 Jest 내부에서 전체 타입 체크를 건너뛰어 ts-jest보다 10-20배 빠릅니다. 타입 체크는 CI에서 tsc --noEmit으로 따로 실행하세요. 타입 오류가 테스트를 실패시키길 원하면 ts-jest를, 속도를 원하면 SWC를 쓰세요.

happy-domjsdom보다 대략 2-3배 빠르고 DOM API의 큰 부분 집합을 구현합니다. 일부 엣지 케이스를 놓치므로, “not implemented” 오류가 나면 jsdom으로 폴백하세요.

컴포넌트가 .css.scss 파일을 직접 import한다면 네. (CSS 모듈용) identity-obj-proxy나 작은 빈 스텁으로 매핑하세요. 이것이 없으면 테스트가 import 시점에 오류가 납니다.

네. TypeScript 출력 옵션을 고르면 생성기가 jest.config.ts를 내보냅니다. Jest 27+는 ts-node가 설치되어 있으면 .ts 설정을 자동 로드합니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다