ddd-ts-kit/test-no-mocks
Identifiant d'architecture : test/no-mocks. Sévérité par défaut : warn dans recommended, error dans strict.
S'applique à : les fichiers de test d'un contexte (test/**, *.spec.ts, *.test.ts).
Pourquoi
Section intitulée « Pourquoi »Un mock vérifie des appels, pas des résultats, et casse à chaque refactorisation. Un fake (double de test) est une implémentation en mémoire du port qui fonctionne vraiment, tenue à la même suite de contrat que l'adaptateur réel.
vi.mock,vi.doMock,vi.fn,vi.spyOn,vi.mockedet leurs jumeaux dejest- un import de
sinon,ts-mockito,jest-mock,jest-mock-extended,vitest-mock-extended,testdouble,ts-auto-mock,typemoq,moq.ts,@golevelup/ts-jest,@golevelup/ts-vitest
Incorrect :
const save = vi.fn();vi.mock('@/contexts/billing/infrastructure/persistence/drizzle-invoice.repository');Correct :
const invoices = new FakeInvoiceRepository();await handler.execute(command);expect(await invoices.findById(id)).toBeDefined();vi.useFakeTimers et vi.setSystemTime ne sont pas des mocks d'un collaborateur et sont permis, même si FixedClock est la façon habituelle.
Aucune.
rules."test/no-mocks" à off dans ddd-ts-kit.config.json désactive la règle, et // ddd-ts-kit-disable-next-line test/no-mocks -- <reason> désactive une ligne, exactement comme pour ddd-ts-kit check.
- Les tests hors d'un contexte (
test/e2e) ne sont pas jugés.
Avec le checker de la CLI
Section intitulée « Avec le checker de la CLI »ddd-ts-kit check signale le même identifiant avec des expressions régulières. Cette règle fait autorité.