Alternative à Mock Service Worker (MSW) : quand opter pour une plateforme de mocking d'API complète

Mock Service Worker est idéal pour les tests frontend. Découvrez où MSW trouve sa place, où il ne convient pas, et la meilleure alternative à MSW pour des mocks partagés et basés sur un schéma.

Ashley Innocent

Ashley Innocent

24 June 2026

Alternative à Mock Service Worker (MSW) : quand opter pour une plateforme de mocking d'API complète

Apidog pour les entreprises

Déploiement sur site

SSO & RBAC

Conforme SOC 2

Découvrir Apidog Enterprise

Si vous écrivez des tests frontend, vous avez probablement rencontré Mock Service Worker (MSW). C'est la bibliothèque de référence pour intercepter les requêtes dans le navigateur et Node, et pour les tests unitaires et de composants, elle est difficile à battre. Ce guide explique ce que MSW fait bien, où il atteint ses limites de mise à l'échelle, et quand une plateforme de simulation d'API hébergée est plus judicieuse.

bouton

Qu'est-ce que Mock Service Worker ?

Mock Service Worker est une bibliothèque JavaScript qui intercepte les requêtes réseau à la source. Dans le navigateur, elle enregistre un Service Worker qui intercepte les appels fetch et XMLHttpRequest sortants. Dans Node, elle modifie la couche de requête pour que les mêmes gestionnaires s'exécutent dans Jest ou Vitest. Vous écrivez des gestionnaires de requêtes qui correspondent à une méthode et un chemin, puis vous renvoyez la réponse que vous souhaitez.

La conception est astucieuse. Votre code d'application continue d'appeler les véritables API réseau. MSW se positionne au milieu et répond, de sorte que vous n'avez pas à simuler fetch ou à changer votre client HTTP. Les mêmes définitions de maquettes fonctionnent dans les tests et dans une version de développement en cours, c'est pourquoi tant d'équipes React et Vue l'utilisent. Vous pouvez explorer le code source de MSW sur GitHub pour voir comment fonctionne la couche d'interception.

Un gestionnaire typique ressemble à ceci :

import { http, HttpResponse } from 'msw'

export const handlers = [
  http.get('/api/users/:id', ({ params }) => {
    return HttpResponse.json({ id: params.id, name: 'Ada Lovelace' })
  }),
]

C'est tout l'intérêt. La maquette vit à côté de votre code, elle est versionnée avec vos tests, et elle s'exécute partout où votre JavaScript s'exécute.

Les points forts de MSW

MSW est parfaitement adapté lorsque la maquette et le consommateur résident dans la même base de code. Voici quelques cas où c'est véritablement l'outil idéal :

Si cela décrit votre situation, vous n'avez probablement besoin de rien d'autre. MSW est gratuit, open source et conçu précisément pour cela.

Où MSW commence à montrer ses limites

Ce qui rend MSW excellent dans un seul dépôt, à savoir des maquettes qui vivent sous forme de code dans ce dépôt, est ce qui le limite une fois que davantage de personnes sont impliquées. Voici les situations où les équipes ont tendance à le dépasser.

Consommateurs non-JavaScript

Les gestionnaires MSW sont en JavaScript. Si votre équipe mobile écrit en Swift ou Kotlin, ou si vos tests d'intégration backend s'exécutent en Go ou Python, ils ne peuvent pas importer vos gestionnaires. Ils auraient besoin de leurs propres maquettes, qui s'éloigneraient des vôtres. Un serveur de maquette agnostique au langage qui communique en HTTP via une URL réelle fonctionne pour chaque client, quelle que soit la langue.

Maquettes partagées et toujours actives

MSW s'exécute à l'intérieur d'un processus. Il n'y a pas d'URL partagée qu'un ingénieur QA, un concepteur ou une équipe partenaire puisse atteindre depuis sa propre machine. Dès que vous souhaitez un point d'accès que plusieurs personnes utilisent simultanément, vous avez besoin d'un serveur de maquette hébergé avec une adresse stable, et non d'un Service Worker lié à un seul onglet de navigateur.

Workflows axés sur la conception et basés sur des schémas

Si vous concevez des API en OpenAPI avant d'écrire du code, vous souhaitez que les maquettes soient générées automatiquement à partir de la spécification, afin que la maquette ne contredise pas le contrat. MSW s'attend à ce que vous écriviez les gestionnaires à la main. La génération de maquettes directement à partir d'un schéma est un modèle différent. Vous pouvez en savoir plus sur cette approche dans ce guide sur la simulation d'API et les modèles qui l'entourent.

Données réalistes et dynamiques à grande échelle

MSW renvoie ce que votre gestionnaire code. Pour des données réalistes sur de nombreux champs, vous écrivez cette logique vous-même. Les plateformes qui intègrent la génération de style "faker" et l'inférence de noms de champs vous donnent des réponses réalistes sans avoir à coder chacune d'elles à la main.

MSW vs une plateforme complète de simulation d'API

Voici une comparaison honnête. Aucune colonne n'est "meilleure" dans l'absolu ; elles résolvent des problèmes différents.

Capacité Mock Service Worker Plateforme API hébergée (ex. Apidog)
S'exécute dans les tests unitaires/composants JS Oui, natif Non, ce n'est pas une bibliothèque de tests JS
Agnostique au langage via HTTP Non (JS seulement) Oui, tout client
URL partagée pour toute l'équipe Non Oui, serveur de maquette hébergé
Générer des maquettes à partir d'OpenAPI Manuel Automatique à partir du schéma
Génération de données intelligentes/dynamiques Codé à la main Intégré
Vit dans votre dépôt avec les tests Oui Stocké dans un projet partagé
Coût Gratuit, open source Tier gratuit + plans payants

En résumé : MSW est le bon choix pour les tests frontend et le développement local. Une plateforme comme Apidog est le bon choix lorsque la maquette doit être partagée, agnostique au langage ou basée sur une spécification.

Apidog comme complément, pas comme remplacement

Pour être clair, Apidog ne remplace pas MSW directement dans Jest ou Vitest. Ce n'est pas une bibliothèque JavaScript que vous importez dans un fichier de test. Considérez-le comme la couche supérieure de vos tests unitaires, l'endroit où les maquettes deviennent une ressource partagée, agnostique au langage, pour toute l'équipe.

Voici ce à quoi cela ressemble en pratique. Vous concevez ou importez une API dans Apidog, et celle-ci génère automatiquement un point d'accès de maquette à partir du schéma. La maquette obtient une URL réelle que vos coéquipiers frontend, mobile et QA peuvent tous appeler. Apidog remplit les réponses avec des données réalistes en les inférant des noms de champs, de sorte qu'un champ nommé email renvoie un e-mail et createdAt renvoie une date. Vous pouvez également écrire des règles personnalisées lorsque vous avez besoin d'une réponse 500 spécifique ou d'un cas limite particulier.

Étant donné que la maquette provient du même schéma que votre conception et vos tests, elle reste synchronisée avec le contrat. C'est la partie que les gestionnaires écrits à la main ne peuvent pas garantir. Si vous voulez voir comment la génération de schémas en maquettes se compare entre les outils, ce récapitulatif des meilleurs outils de simulation d'API met les options côte à côte.

Une répartition pratique que de nombreuses équipes adoptent :

Vous ne choisissez pas l'un ou l'autre. Vous utilisez chacun là où il est pertinent. Téléchargez Apidog si vous souhaitez essayer le côté hébergé en parallèle de votre configuration MSW existante.

Autres alternatives à MSW à connaître

MSW n'est pas la seule bibliothèque de simulation, et une plateforme n'est pas votre seule option. Selon votre stack :

Chacun a ses compromis. WireMock et Prism sont orientés vers le backend et le travail contractuel ; Mockoon et json-server sont orientés vers une configuration locale rapide. Si votre problème est spécifiquement "MSW ne peut pas aider mes coéquipiers non-JS", tout serveur de maquette basé sur HTTP le résout. Pour une perspective frontend plus large, voyez comment les équipes gèrent la simulation d'API en React avec Axios.

Questions fréquemment posées

MSW est-il gratuit ?

Oui. Mock Service Worker est open source sous licence MIT et gratuit à utiliser dans tout projet, commercial ou non. Vous ne commencez à payer que lorsque vous passez à une plateforme hébergée pour des maquettes partagées, et des outils comme Apidog incluent également un niveau gratuit pour cela.

Apidog peut-il remplacer MSW dans mes tests unitaires ?

Non, et vous ne devriez pas essayer de le faire. MSW intercepte les requêtes au sein de votre exécuteur de tests JavaScript. Apidog est une plateforme hébergée, pas une bibliothèque importable, il ne peut donc pas se placer à l'intérieur de Jest ou Vitest comme le fait MSW. Utilisez Apidog pour les maquettes partagées, inter-équipes ou basées sur des schémas. Si vous vous concentrez uniquement sur le côté exécuteur de tests, ce guide sur la manière de simuler des appels API couvre les approches "in-code".

MSW fonctionne-t-il dans Node, ou seulement dans le navigateur ?

Les deux. Dans le navigateur, MSW utilise un Service Worker. Dans Node, il modifie la couche de requête pour que les mêmes gestionnaires s'exécutent dans Jest, Vitest ou tout environnement de test Node. Ce mode dual est l'une de ses plus grandes forces pour les équipes JS full-stack.

Quand devrais-je passer de MSW à un serveur de maquette hébergé ?

Passez à un serveur de maquette hébergé, ou plutôt ajoutez-en un, lorsque la maquette doit être partagée. Les signaux les plus clairs : un client non-JavaScript en a besoin, plusieurs personnes ont besoin de la même URL stable, ou vous concevez des API en commençant par les spécifications et souhaitez que les maquettes soient générées automatiquement à partir d'OpenAPI.

Conclusion

MSW est excellent pour ce pour quoi il a été conçu : intercepter les requêtes en JavaScript pour les tests frontend et unitaires. Il n'essaie pas d'être une maquette partagée, hébergée et agnostique au langage, et c'est très bien. Lorsque vos maquettes doivent sortir du dépôt, lorsque d'autres langages ou d'autres équipes en ont besoin, ou lorsque vous souhaitez qu'elles soient générées à partir d'une spécification, c'est le moment d'ajouter une plateforme complète à ses côtés.

Apidog gère le côté partagé et basé sur les schémas : un serveur de maquette hébergé avec une URL réelle, des maquettes automatiques à partir de votre conception OpenAPI et des données réalistes prêtes à l'emploi. Gardez MSW là où il est fort, et laissez Apidog couvrir tout ce qui dépasse les limites de votre exécuteur de tests. Téléchargez Apidog et dirigez votre frontend vers une maquette partagée pour voir la différence.

bouton

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API

Alternative à Mock Service Worker (MSW) : quand opter pour une plateforme de mocking d'API complète