BlueAI株式会社BlueAI
コード生成上級

Jest から Vitest への移行

Jest 設定とテストファイルを Vitest 互換にコンバートするプロンプト。

平原尚樹
監修: 平原尚樹

株式会社BlueAI 代表取締役CEO / ソフトウェアエンジニア / プロダクトエンジニア / Google Cloud Architect / 元AIスタートアップ(Doorkel)

酒井歩乃加
監修: 酒井歩乃加

早稲田大学文化構想学部卒業 / フリーランス編集者・ライター / 元マイベスト編集ディレクター / SEO対策記事・取材記事執筆

こんな課題を解決

Vite を採用したが、テストはまだ Jest のままで二重設定になっている。ESM 周りの問題も多くこの機に Vitest へ統一したい。

プロンプト

Claude Code に入力

テスト基盤を Jest から Vitest に移行してください。

## 現状
- jest.config.ts / babel.config.js あり
- テストファイル数 約 180
- 利用機能 ts-jest, @testing-library/jest-dom, jest.mock

## 手順
1. vitest, @vitest/coverage-v8, jsdom を導入
2. vitest.config.ts を作成(vite の resolve.alias を共有)
3. setupTests.ts を Vitest 用に書き換え(@testing-library/jest-dom/vitest)
4. jest.mock → vi.mock、jest.fn → vi.fn など API 置換
5. snapshot の互換性を確認(toMatchInlineSnapshot 含む)
6. package.json scripts を更新

## 守ること
- カバレッジ閾値は既存と同等を維持
- CI(GitHub Actions)の job 名・キャッシュも更新
- 失敗テストは無理に直さず、ファイル単位で skip マークを付けて別 PR で対応

実行結果の例

Claude Code が以下を返します。 - vitest.config.ts と setupTests.ts - jest API 置換の diff(180 ファイル) - 残骸となる jest 関連依存の削除リスト - 残課題テスト 6 件の skip 一覧

コツ・ポイント

  • jest-dom は v6 で vitest 専用 import path がある
  • fake timers は vi.useFakeTimers でほぼ互換だが modern/legacy 違いに注意
  • CI のキャッシュキーも .vitest 用に変える
  • globals true にすると import 行が減るがチームの好みで決める

Claude Code を体系的に学びませんか?

全10章・30レッスン無料公開中

第1章から始める