vitest について
vitestは、Vitestのテストを作成・保守する開発者向けのベストプラクティスガイドです。優先度付きのルールで、非同期処理、分離、モック、性能を扱います。
主な機能
- 01優先度別に44のルールを整理
- 02非同期テストとテスト分離を網羅
- 03モックと状態のクリーンアップを解説
- 04性能とCIの改善指針
- 05スナップショット、環境、アサーション、構成を網羅
活用シーン
- 01Vitestテストの作成やレビュー
- 02不安定または遅いテストの調査
- 03テスト設定とモックの構成
- 04CIでのテスト実行の改善
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill vitestインストール後、Claude Code で/vitestを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdCHANGELOG.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdassert-edge-cases.mdassert-expect-assertions.mdassert-one-assertion-concept.mdassert-specific-matchers.mdassert-toequal-vs-tobe.mdasync-act-wrapper.mdasync-await-assertions.mdasync-concurrent-expect.mdasync-error-handling.mdasync-fake-timers.mdasync-return-promises.mdasync-waitfor-polling.mdenv-browser-api-mocking.mdenv-globals-config.mdenv-per-file-override.mdenv-setup-files.mdmock-avoid-overmocking.mdmock-clear-between-tests.mdmock-implementation-not-value.mdmock-msw-network.mdmock-spyon-vs-mock.mdmock-type-safety.mdmock-vi-mock-hoisting.mdorg-describe-nesting.md詳細
Vitest のベストプラクティス
Vitest テストフレームワークのパフォーマンス最適化とベストプラクティスを網羅したガイドです。8 つのカテゴリにわたる 44 のルールを影響度順にまとめており、テストの作成、リファクタリング、コードレビューに役立ちます。
適用する場面
次のような場合に、これらのガイドラインを参照してください。
- Vitest のテストを新しく作成するとき
- 不安定なテストや遅いテストをデバッグするとき
- テスト設定を行うとき
- PR でテストコードをレビューするとき
- Jest から Vitest に移行するとき
- CI/CD のテストパフォーマンスを最適化するとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | 接頭辞 |
|---|---|---|---|
| 1 | 非同期パターン | 重大 | async- |
| 2 | テストのセットアップと分離 | 重大 | setup- |
| 3 | モックのパターン | 高 | mock- |
| 4 | パフォーマンス | 高 | perf- |
| 5 | スナップショットテスト | 中 | snap- |
| 6 | 環境 | 中 | env- |
| 7 | アサーション | 低〜中 | assert- |
| 8 | テストの構成 | 低 | org- |
クイックリファレンス
1. 非同期パターン(重大)
async-await-assertions- 誤検知を防ぐため、非同期アサーションを await するasync-return-promises- テスト関数から Promise を返すasync-fake-timers- 時間に依存するコードにはフェイクタイマーを使用するasync-waitfor-polling- 非同期条件には vi.waitFor を使用するasync-concurrent-expect- 並行テストではテストコンテキストの expect を使用するasync-act-wrapper- act の警告を避けるため、ユーザーイベントを await するasync-error-handling- 非同期エラー処理を適切にテストする
2. テストのセットアップと分離(重大)
setup-beforeeach-cleanup- afterEach フックで状態をクリーンアップするsetup-restore-mocks- 各テストの後にモックを復元するsetup-avoid-shared-state- テスト間で可変状態を共有しないsetup-beforeall-expensive- コストの高い一度限りのセットアップには beforeAll を使用するsetup-reset-modules- モジュールの状態をテストするときはモジュールをリセットするsetup-test-factories- 複雑なテストデータにはテストファクトリーを使用する
3. モックのパターン(高)
mock-vi-mock-hoisting- vi.mock の巻き上げ動作を理解するmock-spyon-vs-mock- 適切に vi.spyOn と vi.mock を使い分けるmock-implementation-not-value- 動的なモックには mockImplementation を使用するmock-msw-network- ネットワークリクエストのモックには MSW を使用するmock-avoid-overmocking- 過剰なモックを避けるmock-type-safety- モックの型安全性を維持するmock-clear-between-tests- テスト間でモックの状態をクリアする
4. パフォーマンス(高)
perf-pool-selection- パフォーマンスに適したプールを選択するperf-disable-isolation- 安全な場合はテストの分離を無効にするperf-happy-dom- 可能な場合は jsdom より happy-dom を使用するperf-sharding- CI の並列化にはシャーディングを使用するperf-run-mode-ci- CI 環境では run モードを使用するperf-bail-fast-fail- CI で早期に失敗させるには bail を使用する
5. スナップショットテスト(中)
snap-inline-over-file- 小さな値にはファイル形式よりインラインスナップショットを優先するsnap-avoid-large- 大きなスナップショットを避けるsnap-stable-serialization- スナップショットのシリアライズを安定させるsnap-review-updates- コミット前にスナップショットの更新を確認するsnap-describe-intent- スナップショットテストには内容がわかる名前を付ける
6. 環境(中)
env-per-file-override- 必要に応じてファイルごとに環境を上書きするenv-setup-files- グローバル設定にはセットアップファイルを使用するenv-globals-config- グローバル設定を一貫して構成するenv-browser-api-mocking- テスト環境で利用できないブラウザー API をモックする
7. アサーション(低〜中)
assert-specific-matchers- 汎用マッチャーより具体的なマッチャーを使用するassert-edge-cases- エッジケースと境界値をテストするassert-one-assertion-concept- 1 つのテストにつき 1 つの概念をテストするassert-expect-assertions- 非同期テストには expect.assertions を使用するassert-toequal-vs-tobe- toBe と toEqual を適切に使い分ける
8. テストの構成(低)
org-file-colocation- テストファイルをソースファイルと同じ場所に配置するorg-describe-nesting- 論理的に分類するために describe ブロックを使用するorg-test-naming- 内容が分かりやすいテスト名を付けるorg-test-skip-only- skip と only を適切に使用する
使用方法
詳しい説明とコード例については、各リファレンスファイルを参照してください。
- セクション定義 - カテゴリーの構成と影響レベル
- ルールのテンプレート - 新しいルールを追加するためのテンプレート
- async-await-assertions - ルールファイルの例
- mock-vi-mock-hoisting - ルールファイルの例
関連スキル
- TDD の手法については、
test-tddスキルを参照してください - MSW を使用した API のモックについては、
test-mswスキルを参照してください - TypeScript のテストパターンについては、
typescriptスキルを参照してください
コンパイル済みの完全版ドキュメント
すべてのルールを展開した完全なガイドについては、AGENTS.md を参照してください
コメント
Markdown 対応