jpskill.com
🛠️ 開発・MCP コミュニティ

msw

Mock Service Worker (MSW) を活用し、APIモックでネットワークリクエストを傍受することで、テストや開発時にアプリのコードを修正したり、モックサーバーを立てたりせずに、RESTやGraphQL APIのモックを容易にするSkill。

📜 元の英語説明(参考)

Assists with intercepting network requests for API mocking using Mock Service Worker (MSW). Use when mocking REST or GraphQL APIs for unit tests, integration tests, or local development without modifying application code or running mock servers. Trigger words: msw, mock service worker, api mocking, test mocking, request handlers, setupServer.

🇯🇵 日本人クリエイター向け解説

一言でいうと

Mock Service Worker (MSW) を活用し、APIモックでネットワークリクエストを傍受することで、テストや開発時にアプリのコードを修正したり、モックサーバーを立てたりせずに、RESTやGraphQL APIのモックを容易にするSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o msw.zip https://jpskill.com/download/15148.zip && unzip -o msw.zip && rm msw.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/15148.zip -OutFile "$d\msw.zip"; Expand-Archive "$d\msw.zip" -DestinationPath $d -Force; ri "$d\msw.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して msw.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → msw フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

MSW (Mock Service Worker)

概要

MSW は、テストおよびローカル開発のために、サービスワーカーレベル(ブラウザ)またはインメモリ(Node.js)でネットワークリクエストをインターセプトし、REST および GraphQL API をモックします。両方の環境で同じハンドラーを使用することで、モックの一貫性を保ち、アプリケーションコードを変更することなく、あらゆる HTTP クライアント(fetch, axios, Apollo)と透過的に連携します。

指示

  • ハンドラーを設定する際は、http.get()http.post() などで REST ハンドラーを定義し、graphql.query() および graphql.mutation() で GraphQL ハンドラーを定義し、HttpResponse.json() を介してレスポンスを返します。
  • Node.js でテストする場合は、テスト前に setupServer(...handlers)server.listen() と共に使用し、テスト間に server.resetHandlers() を使用し、すべてのテスト後に server.close() を使用します。
  • ブラウザで開発する場合は、setupWorker(...handlers) を使用し、npx msw init ./public を実行してサービスワーカーファイルを生成します。これにより、DevTools でリクエストをインターセプトできるようになります。
  • テストごとにオーバーライドする場合は、server.use() を使用して、エラー状態またはエッジケースのための一時的なハンドラーを追加します。これらは現在のテストにスコープされ、その後リセットされます。
  • ネットワークの問題をシミュレートする場合は、レイテンシーには delay(ms) を使用し、エラーには HttpResponse.error() を使用し、エラーレスポンスにはカスタムステータスコードを使用します。
  • ハンドラーを整理する場合は、テストファイルと開発サーバー全体で再利用できるように、共有ハンドラーを src/mocks/handlers.ts に保持し、server.use() を介してテストごとのオーバーライドを行います。

例 1: コンポーネントテスト用の REST API をモックする

ユーザーリクエスト: 「React Testing Library テスト用にユーザー API をモックするために MSW をセットアップしてください」

アクション:

  1. GET /api/users、POST /api/users、および GET /api/users/:id 用のハンドラーを src/mocks/handlers.ts で定義します。
  2. beforeAll/afterEach/afterAll フックを使用して、テストセットアップファイルで setupServer(...handlers) をセットアップします。
  3. モック API からのデータを使用してレンダリングするコンポーネントテストを作成します。
  4. server.use(http.get("/api/users", () => HttpResponse.json(null, { status: 500 }))) を使用して、テストごとのエラーオーバーライドを追加します。

出力: ハッピーパスとエラー状態のカバレッジを含む、現実的な API モックを使用したコンポーネントテスト。

例 2: 開発用の GraphQL API をモックする

ユーザーリクエスト: 「ローカル開発中に GraphQL API をモックするために MSW をセットアップしてください」

アクション:

  1. クエリ (GetPosts, GetUser) およびミューテーション (CreatePost) 用の GraphQL ハンドラーを定義します。
  2. 条件付きアクティベーションを使用して、ブラウザのエントリーポイントで setupWorker(...handlers) をセットアップします。
  3. 現実的なネットワークレイテンシーをシミュレートするために delay(300) を追加します。
  4. npx msw init ./public を実行し、開発サーバーを起動します。

出力: ブラウザの DevTools で表示されるモックされた GraphQL API を備えた開発環境。現実的なレイテンシーが含まれます。

ガイドライン

  • モックの一貫性を保つために、同じハンドラーを使用してテストと開発の両方で MSW を使用します。
  • テストファイルと開発サーバー全体で再利用できるように、共有の src/mocks/handlers.ts ファイルでハンドラーを定義します。
  • テストごとのオーバーライドには server.use() を使用します。デフォルトのハッピーパスは共有ハンドラーに保持します。
  • エラー処理が正しく機能することを確認するために、テストで常にエラー状態をモックします。
  • 実際のレイテンシーをシミュレートし、ローディング状態のバグをキャッチするために、開発モックで delay() を使用します。
  • テストの汚染を防ぐために、各テスト後に afterEach(() => server.resetHandlers()) でハンドラーをリセットします。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

MSW (Mock Service Worker)

Overview

MSW intercepts network requests at the service worker level (browser) or in-memory (Node.js) to mock REST and GraphQL APIs for tests and local development. It uses the same handlers for both environments, keeping mocks consistent, and works transparently with any HTTP client (fetch, axios, Apollo) without modifying application code.

Instructions

  • When setting up handlers, define REST handlers with http.get(), http.post(), etc. and GraphQL handlers with graphql.query() and graphql.mutation(), returning responses via HttpResponse.json().
  • When testing in Node.js, use setupServer(...handlers) with server.listen() before tests, server.resetHandlers() between tests, and server.close() after all tests.
  • When developing in the browser, use setupWorker(...handlers) and run npx msw init ./public to generate the service worker file, which intercepts requests visible in DevTools.
  • When overriding per test, use server.use() to add temporary handlers for error states or edge cases, which scope to the current test and reset afterward.
  • When simulating network issues, use delay(ms) for latency, HttpResponse.error() for failures, and custom status codes for error responses.
  • When organizing handlers, keep shared handlers in src/mocks/handlers.ts for reuse across test files and the dev server, with per-test overrides via server.use().

Examples

Example 1: Mock a REST API for component tests

User request: "Set up MSW to mock my user API for React Testing Library tests"

Actions:

  1. Define handlers in src/mocks/handlers.ts for GET /api/users, POST /api/users, and GET /api/users/:id
  2. Set up setupServer(...handlers) in the test setup file with beforeAll/afterEach/afterAll hooks
  3. Write component tests that render with data from the mock API
  4. Add per-test error overrides with server.use(http.get("/api/users", () => HttpResponse.json(null, { status: 500 })))

Output: Component tests with realistic API mocking, including happy path and error state coverage.

Example 2: Mock a GraphQL API for development

User request: "Set up MSW to mock my GraphQL API during local development"

Actions:

  1. Define GraphQL handlers for queries (GetPosts, GetUser) and mutations (CreatePost)
  2. Set up setupWorker(...handlers) in the browser entry point with conditional activation
  3. Add delay(300) to simulate realistic network latency
  4. Run npx msw init ./public and start the dev server

Output: A development environment with mocked GraphQL API visible in browser DevTools, with realistic latency.

Guidelines

  • Use MSW in both tests and development with the same handlers to keep mocks consistent.
  • Define handlers in a shared src/mocks/handlers.ts file for reuse across test files and the dev server.
  • Use server.use() for per-test overrides; keep the default happy path in shared handlers.
  • Always mock error states in tests to verify error handling works correctly.
  • Use delay() in development mocks to simulate real latency and catch loading state bugs.
  • Reset handlers after each test with afterEach(() => server.resetHandlers()) to prevent test pollution.