Skip to content
Latchkey

MSW vs nock: どちらのAPIモックツールを選ぶか

MSWはブラウザとNodeの双方でネットワーク層でrequestをインターセプトし、nockはサーバーテスト向けにモジュールレベルでNodeのHTTPをインターセプトします。

MSW(Mock Service Worker)はrequestのhandlerを一度定義してネットワーク境界でインターセプトし、ブラウザ(Service Worker経由)とNodeで動作するため、同じmockがunit test、コンポーネントテスト、さらにはローカル開発にも役立ちます。nockはNodeのHTTP層にpatchを当てて送信requestをインターセプト・検証し、Node/サーバーのテストに純粋に特化しています。MSWは環境をまたいだ再利用と忠実度で優れ、nockは特化した成熟したNodeのHTTPモッカーとして優れます。

MSWnock
環境ブラウザ + NodeNodeのみ
インターセプトネットワーク層NodeのHTTPモジュール
再利用テスト + 開発 + storybookサーバーテスト
忠実度高い(実際のネットワーク経路)モジュールレベル
最適な用途フロント/バック共通の汎用mockNodeのHTTPテストのmock

ユースケースとスコープ

MSWは、ブラウザテスト、コンポーネントテスト、Storybook、ローカル開発をまたいで単一のhandlerセットが欲しいチームに適しています。nockは、送信HTTPをモジュールレベルでインターセプト・検証するだけでよいNode/サーバーのテストスイートに適しています。MSWの環境横断の到達範囲が際立った特長で、nockの特化はサーバー専用のmockをシンプルに保ちます。

テストとCI

どちらもCIでheadlessに動作し、MSWのNode統合はコンポーネントテストとunit testをカバーし、nockはサーバー呼び出しをカバーします。いずれもmanaged runnerで動作し、高速なrunnerはmockした統合スイートを短縮します。

結論

ブラウザ、Node、テスト、開発をまたぐ単一のmock層が欲しいなら: MSW。サーバーテスト向けの特化したNodeのHTTPインターセプターが欲しいなら: nock。MSWは汎用的で万能な選択肢、nockはNode専用の軽量なスペシャリストです。

関連ガイド