Repolode
mswjs

mswjs/msw

ブラウザとNode.jsでネットワークリクエストをインターセプトするJavaScript APIモックライブラリ。テストや開発でモックレスポンスを使っても、アプリのコードを変更せずに実行できます。

スター
18,307
フォーク
642
未解決の Issue
16
最終コミット
8 日前

これは何?

Mock Service Worker (MSW) は、ネットワーク層でAPIリクエストをモックします。ブラウザではService Worker APIを使ってモック定義に基づくレスポンスを返し、Node.jsでは低レベルのインターセプト層を使います。fetch、axios、データ取得ライブラリを含め、アプリケーション本体のコードには手を加えないため、本番環境と同じようにアプリが動作します。

リクエストハンドラーはExpress風のルーティング構文で記述でき、パラメーター、ワイルドカード、正規表現に対応しています。レスポンスにはステータスコード、ヘッダー、Cookie、遅延を設定できるほか、独自のresolverで完全にカスタマイズすることもできます。同じハンドラーをユニットテスト、統合テスト、E2Eテスト、ローカル開発で再利用でき、レスポンスはブラウザのDevToolsのNetworkタブで確認できます。

ブラウザ向けのsetupWorkerとNode.js向けのsetupServerを提供しており、ドキュメントサイトと、一般的なセットアップの例を示すリポジトリも用意されています。

主な機能

  • 01ネットワーク層でリクエストをインターセプトするため、アプリケーションのコードを変更せずに動作します。
  • 02Service Worker経由でブラウザに対応し、Node.jsではテストやサーバーで利用できます。
  • 03パラメーター、ワイルドカード、正規表現に対応したExpress風のルートマッチングを利用できます。
  • 04レスポンスに任意のステータスコード、ヘッダー、Cookie、遅延を設定でき、resolver関数も指定できます。
  • 05モックしたレスポンスをブラウザのDevToolsのNetworkタブで確認できます。

ユースケース

  • バックエンドAPIが完成する前に、フロントエンドの機能を開発する。
  • HTTPやGraphQLの呼び出しをモックしたユニットテスト、統合テスト、E2Eテストを書く。
  • 遅いエンドポイントや失敗するエンドポイントを再現し、読み込み状態やエラー状態をテストする。
  • スタブ化したサードパーティAPIを使って、ローカルのExpressサーバーを動かす。

クイックスタート

  1. 1

    パッケージを開発用依存関係としてインストールします

    npm i msw --save-dev
  2. 2

    公式のクイックスタートガイドを読んで、リクエストハンドラーを設定します

使う前に知っておきたいこと

  • ブラウザーでモックするには、Service Worker ファイルを生成し、アプリと一緒に配布する必要があります。

収録されている特集

トピック

よくある質問

msw とは?
ブラウザとNode.jsでネットワークリクエストをインターセプトするJavaScript APIモックライブラリ。テストや開発でモックレスポンスを使っても、アプリのコードを変更せずに実行できます。 Mock Service Worker (MSW) は、ネットワーク層でAPIリクエストをモックします。ブラウザではService Worker APIを使ってモック定義に基づくレスポンスを返し、Node.jsでは低レベルのインターセプト層を使います。fetch、axios、データ取得ライブラリを含め、アプリケーション本体のコードには手を加えないため、本番環境と同じようにアプリが動作します。
msw は無料で使えますか?ライセンスは?
msw は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
msw は今もメンテナンスされていますか?
活発にメンテナンス中。msw の最終コミットは 2026年10月17日 です。
msw は何に使えますか?
バックエンドAPIが完成する前に、フロントエンドの機能を開発する。 HTTPやGraphQLの呼び出しをモックしたユニットテスト、統合テスト、E2Eテストを書く。 遅いエンドポイントや失敗するエンドポイントを再現し、読み込み状態やエラー状態をテストする。 スタブ化したサードパーティAPIを使って、ローカルのExpressサーバーを動かす。
msw のインストール方法は?
パッケージを開発用依存関係としてインストールします: npm i msw --save-dev 公式のクイックスタートガイドを読んで、リクエストハンドラーを設定します
msw はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/mswjs/msw

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト