コード生成上級
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 行が減るがチームの好みで決める