開発者やテスターが不安定または低速なAPI依存先を再利用可能なシミュレーションに置き換えられる、オープンソースのAPIシミュレーション・モックツールです。
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
パッケージを開発用依存関係としてインストールします
npm i msw --save-dev - 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 の数値は毎日更新されます。
関連プロジェクト
Jestは、アサーション、モック、スナップショットテスト、対話型ウォッチモードを備えたJavaScriptテストフレームワークです。
標準のgo testランナーで動作する、アサーション、モック、テストスイートを備えたGo向けテストツールキットです。
アプリ全体を起動せずに、React UI コンポーネントを分離して開発・テストできるサンドボックス。
WebDriver、BiDi、Appiumを通じて、ブラウザーやモバイルアプリのE2E・ユニット・コンポーネントテストを自動化するNode.jsテストフレームワーク。
開発中に送信メールを受け取るローカルSMTPサーバー。Webインターフェースでメールを確認できます。