msw について
MSW v2 を使う AI エージェントや LLM 向けの API モックガイドです。初期設定、ハンドラー、テスト、レスポンス、GraphQL モックなどを扱う 48 のルールを影響度順にまとめています。
主な機能
- 0148 の API モックルール
- 028 つのルールカテゴリ
- 03影響度順の優先順位付け
- 04ルール別のコード例
活用シーン
- 01MSW のテスト環境設定
- 02リクエストハンドラーの作成と整理
- 03REST または GraphQL API のモック
- 04ハンドラーのマッチング問題の調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pymodel/ react-frontend-skills --skill mswインストール後、Claude Code で/mswを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/advanced-bypass-requests.mdadvanced-cookies-auth.mdadvanced-dynamic-scenarios.mdadvanced-file-uploads.mdadvanced-playwright-integration.mdadvanced-vitest-browser.mdadvanced-websocket-mocking.mddebug-common-issues.mddebug-lifecycle-events.mddebug-request-logging.mddebug-verify-interception.mdgraphql-batched-queries.mdgraphql-error-responses.mdgraphql-operation-handlers.mdgraphql-schema-first.mdgraphql-variables-access.mdhandler-absolute-urls.mdhandler-domain-grouping.mdhandler-happy-path-first.mdhandler-request-body-parsing.mdhandler-resolver-argument.mdhandler-reusability-environments.mdhandler-shared-resolvers.mdhandler-v2-response-syntax.mdmatch-custom-predicate.mdmatch-handler-order.mdmatch-http-methods.mdmatch-query-params.mdmatch-url-patterns.mdresponse-custom-headers.md詳細
MSW のベストプラクティス
MSW v2 アプリケーション(現行バージョン:MSW 2.15)向けの包括的な API モックガイドです。AI エージェントと LLM 向けに設計されています。影響度に応じて優先順位付けされた、8 つのカテゴリにわたる 48 のルールを収録し、自動リファクタリングとコード生成を支援します。
適用するタイミング
以下の場面で、このガイドラインを参照してください。
- テストや開発用に MSW を設定するとき
- リクエストハンドラーを記述または整理するとき
- MSW を使用するテスト環境を設定するとき
- REST API または GraphQL API をモックするとき
- ハンドラーのマッチングに関する問題をデバッグするとき
- エラー状態やエッジケースをテストするとき
優先度別ルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | セットアップと初期化 | 重大 | setup- |
| 2 | ハンドラーの設計 | 重大 | handler- |
| 3 | テストとの統合 | 高 | test- |
| 4 | レスポンスのパターン | 高 | response- |
| 5 | リクエストのマッチング | 中〜高 | match- |
| 6 | GraphQL のモック | 中 | graphql- |
| 7 | 高度なパターン | 中 | advanced- |
| 8 | デバッグとパフォーマンス | 低 | debug- |
クイックリファレンス
1. セットアップと初期化(重大)
setup-server-node-entrypoint- Node.js 用の正しいエントリーポイント(msw/node)を使用するsetup-lifecycle-hooks- テストのセットアップでサーバーのライフサイクルを設定するsetup-worker-script-commit- ワーカースクリプトをバージョン管理にコミットするsetup-node-version- MSW v2 では Node.js 18 以降を必須とするsetup-unhandled-requests- 未処理のリクエストの動作を設定するsetup-typescript-config- MSW v2 用に TypeScript を設定する
2. ハンドラーの設計(重大)
handler-happy-path-first- 基本として正常系のハンドラーを定義するhandler-domain-grouping- ドメインごとにハンドラーをグループ化するhandler-absolute-urls- ハンドラーでは絶対 URL を使用するhandler-shared-resolvers- 共通のレスポンス処理をリゾルバーに切り出すhandler-v2-response-syntax- MSW v2 のレスポンス構文を使用するhandler-request-body-parsing- リクエストボディを明示的に解析するhandler-resolver-argument- リゾルバーの引数を正しく分割代入するhandler-reusability-environments- 複数の環境でハンドラーを共有する
3. テストとの統合(高)
test-reset-handlers- 各テストの後にハンドラーをリセットするtest-avoid-request-assertions- リクエストを直接アサートするのは避けるtest-concurrent-boundary- 並行テストには server.boundary() を使用するtest-fake-timers-config- queueMicrotask を維持するようにフェイクタイマーを設定するtest-async-utilities- モックレスポンスには非同期テストユーティリティを使用するtest-clear-request-cache- テスト間でリクエストライブラリのキャッシュをクリアするtest-jsdom-environment- Jest で正しい JSDOM 環境を使用する
4. レスポンスのパターン(高)
response-http-response-helpers- HttpResponse の静的メソッドを使用するresponse-delay-realistic- テスト対象がタイミングに関する動作の場合にのみ遅延を追加するresponse-error-simulation- エラーレスポンスを正しくシミュレートするresponse-one-time-handlers- 連続するシナリオには一度限りのハンドラーを使用するresponse-custom-headers- レスポンスヘッダーを正しく設定するresponse-streaming- ReadableStream でストリーミングレスポンスをモックする
5. リクエストのマッチング(中〜高)
match-url-patterns- URL パスパラメーターを正しく使用するmatch-query-params- リクエスト URL からクエリパラメーターを取得するmatch-custom-predicate- 複雑なマッチングにはカスタム述語を使用するmatch-http-methods- HTTP メソッドを明示的にマッチさせるmatch-handler-order- 具体的なものから一般的なものへとハンドラーを並べる
6. GraphQL のモック(中)
graphql-operation-handlers- GraphQL のマッチングにはオペレーション名を使用するgraphql-error-responses- GraphQL エラーを正しい形式で返すgraphql-batched-queries- バッチ処理された GraphQL クエリを処理するgraphql-variables-access- GraphQL 変数に正しくアクセスするgraphql-schema-first- GraphQL スキーマに対してオペレーションを解決する
7. 高度なパターン(MEDIUM)
advanced-bypass-requests- パススルーリクエストにbypass()を使用するadvanced-cookies-auth- Cookie と認証を処理するadvanced-dynamic-scenarios- 動的なモックシナリオを実装するadvanced-vitest-browser- Vitest のブラウザモード向けに MSW を設定するadvanced-file-uploads- ファイルアップロードのエンドポイントをモックするadvanced-websocket-mocking-ws.linkを使用して WebSocket 接続をモックするadvanced-playwright-integration- @msw/playwright のdefineNetworkFixtureを使用する
8. デバッグとパフォーマンス(LOW)
debug-lifecycle-events- デバッグにライフサイクルイベントを使用するdebug-verify-interception- リクエストのインターセプトが機能していることを確認するdebug-common-issues- MSW のよくある問題と解決方法を把握するdebug-request-logging- デバッグ用にリクエストの詳細をログに記録する
使用方法
まずプロジェクトのルートで実行します。
npx -y @pymodel/react-frontend-skills detect # installed vs. targeted versions
npx -y @pymodel/react-frontend-skills scan --skill msw # deprecated APIs → rule IDs
タスクに該当する上記の各ルールと、scan で検出された各項目について、references/<rule-id>.md を読み、重要な理由と誤ったコードと正しいコードを確認します。
関連スキル
- モック API の利用については、
tanstack-queryスキルを参照してください - テストフレームワークのパターンについては
vitestを、手法についてはtddを参照してください
コメント
Markdown 対応