MSW vs nock: qual ferramenta de mock de API?
MSW intercepta requests na camada de rede tanto para browser quanto para Node; nock intercepta HTTP do Node no nível de módulo para testes de servidor.
O MSW (Mock Service Worker) define handlers de request uma vez e intercepta na fronteira da rede, funcionando no browser (via Service Worker) e no Node, de modo que os mesmos mocks servem para unit tests, testes de componente e até dev local. O nock aplica patch na camada HTTP do Node para interceptar e verificar requests de saída, focado puramente em testes de Node/servidor. O MSW ganha em reuso entre ambientes e fidelidade; o nock ganha como um mocker de HTTP do Node focado e maduro.
| MSW | nock | |
|---|---|---|
| Ambientes | Browser + Node | Apenas Node |
| Interceptação | Camada de rede | Módulo HTTP do Node |
| Reuso | Testes + dev + storybook | Testes de servidor |
| Fidelidade | Alta (caminho de rede real) | Nível de módulo |
| Melhor para | Mocks universais frontend/backend | Mock de testes HTTP no Node |
Caso de uso e escopo
O MSW se encaixa em times que querem um único conjunto de handlers entre testes de browser, testes de componente, Storybook e desenvolvimento local. O nock se encaixa em suítes de teste de Node/servidor que só precisam interceptar e verificar HTTP de saída no nível de módulo. O alcance entre ambientes do MSW é seu destaque; o foco do nock o mantém simples para mocks apenas de servidor.
Testes e CI
Ambos rodam headless no CI; a integração com Node do MSW cobre testes de componente e unit tests, o nock cobre chamadas de servidor. Qualquer um roda em managed runners, onde runners mais rápidos encurtam suítes de integração mockadas.
O veredito
Quer uma única camada de mock entre browser, Node, testes e dev: MSW. Quer um interceptor HTTP do Node focado para testes de servidor: nock. O MSW é a escolha universal e versátil; o nock é o especialista enxuto apenas para Node.