Skip to content

💡 [REQUEST] - Migrer les tests basés sur mocks vers MSW (handlers + data centralisés) #2655

Description

@shikanime

Description

Les tests du monorepo reposent majoritairement sur des mocks de haut niveau : vitest-mock-extended (mockDeep), vi.mock (src/__mocks__/prisma.ts) et vi.spyOn sur les clients ts-rest.
Ces mocks couplent les tests à la forme interne des services : renommer une méthode ou changer un schéma Prisma casse les tests sans aucun changement de comportement observable.
Seuls 6 specs clients de apps/server-nestjs (gitlab, keycloak, nexus, registry, sonarqube, vault) utilisent déjà MSW.

Objectif : migrer les tests basés sur mocks vers MSW, avec handlers et fixtures centralisés dans un dossier msw/ (handlers + data) réutilisable, plutôt que des setups setupServer(...) dupliqués dans chaque spec.

Périmètre :

  • apps/client : remplacer les vi.spyOn(apiClient.*) des stores par des handlers MSW interceptant le vrai appel HTTP du xhr-client.
  • apps/server-nestjs : gĂ©nĂ©raliser MSW Ă  tout ce qui est frontière HTTP ; les mocks Prisma (accès base, non-HTTP) restent hors pĂ©rimètre.
  • plugins/* : mĂŞmes handlers MSW que server-nestjs pour les clients externes, via un partage dans packages/ si pertinent.

PRs liées

Issues liées

Exemples simples

  • apps/client/src/stores/project.spec.ts : listProjects mockĂ© Ă  la main → handler http.get('*/api/v1/projects') servi depuis msw/data/projects.ts.
  • apps/server-nestjs/src/modules/vault/vault-client.service.spec.ts : handlers inline → extraits vers msw/handlers/vault.ts + fixtures msw/data/vault.ts.

Spécifications techniques

  • MSW 2.x est dĂ©jĂ  dans le catalog pnpm (msw: ^2.12.10).
  • Structure cible par application : src/test/msw/handlers/<domaine>.ts (handlers) et src/test/msw/data/<domaine>.ts (fixtures typĂ©es depuis @cpn-console/shared).
  • server.listen() / resetHandlers() / close() centralisĂ©s dans un setup Vitest (vitest.config.ts → test.setupFiles).

Définition du fini

  • Aucun vi.spyOn(apiClient.*) HTTP ne subsiste dans les specs de apps/client (grep -rn "spyOn(apiClient" apps/client/src vide)
  • Les specs clients externes de apps/server-nestjs hors MSW sont migrĂ©es vers des handlers MSW
  • Les handlers et fixtures sont centralisĂ©s dans un dossier msw/ (handlers + data) et partagĂ©s entre server-nestjs et les plugins concernĂ©s
  • La suite unitaire passe : pnpm test

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions