Jest 設定ジェネレーター

jest設定
次へ

スタックを選ぶだけ、TypeScript、React、Node バックエンド、Svelte、で、ジェネレーターが適切なトランスフォーマー、モジュールマッパー、テスト環境、カバレッジのしきい値を備えた jest.config.js を出力します。みんなが忘れがちなオプションもすべて含みます:CSS や画像用の moduleNameMappersetupFilesAfterEachnode_modulesdist を除外する testPathIgnorePatterns

Jest 設定の作り方

  1. 1

    スタックを選ぶ

    TypeScript、React、Vue、Svelte、純粋な Node、またはそれらの組み合わせ。いずれも適切なトランスフォーマーを事前に設定します。

  2. 2

    テスト環境を選ぶ

    ブラウザコードには jsdom、バックエンドには node、あるいはカスタム環境。

  3. 3

    機能を切り替える

    カバレッジのしきい値、スナップショットテスト、モックパス、カスタムセットアップファイル、変換の除外パターン。

  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
Service Worker カスタム環境(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 での手動モック

カバレッジのしきい値:どの数値にすべきか?

  • クリティカルパス/ライブラリ:行 90% 以上、分岐 85% 以上。
  • 機能チーム:行 80%、分岐 70%。
  • 頻繁に変わる UI:行 60〜70%。ビジネスロジックはより高く、レイアウトはより低く狙う。
  • プロトタイプ:しきい値は完全に無効化し、カバレッジはゲートではなく数値として追跡する。

よくある間違い

  • 純粋な Node コードに jsdom を使う。 テストが遅くなるだけで得るものはありません。node に切り替えましょう。
  • ESM パッケージに transformIgnorePatterns を設定し忘れる。 最近のパッケージは ESM のみで配布されるため、Jest に変換するよう指示する必要があります。
  • マッパーなしで画像や CSS をモックする。 テストで .png をインポートすると、モックモジュールがない 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 ファイルを直接インポートしている場合は必要です。(CSS モジュール用の)identity-obj-proxy か、小さな空のスタブにマッピングしてください。これがないと、テストはインポート時にエラーになります。

はい。TypeScript の出力オプションを選ぶと、ジェネレーターは jest.config.ts を生成します。Jest 27 以降は、ts-node がインストールされていれば .ts 形式の設定を自動的に読み込みます。

関連ツール

このツールは他の言語でも利用できます