Repository navigation
Replies: 1 comment
|
Décision de périmètre : MSW n'interceptant que du HTTP, les mocks Prisma ( |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Description
Les tests du monorepo reposent majoritairement sur des mocks de haut niveau :
vitest-mock-extended(mockDeep),vi.mock(src/__mocks__/prisma.ts) etvi.spyOnsur 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 setupssetupServer(...)dupliqués dans chaque spec.Périmètre :
apps/client: remplacer lesvi.spyOn(apiClient.*)des stores par des handlers MSW interceptant le vrai appel HTTP duxhr-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 queserver-nestjspour les clients externes, via un partage danspackages/si pertinent.PRs liées
Issues liées
Exemples simples
apps/client/src/stores/project.spec.ts:listProjectsmocké à la main → handlerhttp.get('*/api/v1/projects')servi depuismsw/data/projects.ts.apps/server-nestjs/src/modules/vault/vault-client.service.spec.ts: handlers inline → extraits versmsw/handlers/vault.ts+ fixturesmsw/data/vault.ts.Spécifications techniques
msw: ^2.12.10).src/test/msw/handlers/<domaine>.ts(handlers) etsrc/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
vi.spyOn(apiClient.*)HTTP ne subsiste dans les specs deapps/client(grep -rn "spyOn(apiClient" apps/client/srcvide)apps/server-nestjshors MSW sont migrées vers des handlers MSWmsw/(handlers + data) et partagés entreserver-nestjset les plugins concernéspnpm testAll reactions