ADR-0017 — Pas de mock DB pour les tests financiers
| Statut | Accepté |
|---|---|
| Date | 2025-09-30 |
| Auteurs | Julien Jorry |
Contexte
Mocker l'EntityManager dans des tests financiers donne une illusion de couverture : les bugs réels viennent des contraintes DB (UNIQUE, FK, locks), pas de l'API ORM. SQLite in-memory permet d'avoir une vraie DB en < 30s sans CI lourde.
Décision
Les tests financiers (Flux, Operation, SSA, SEPA) tournent sur SQLite in-memory réelle. Les mocks restent acceptés pour les externes (Mailer, API HelloAsso/PayZen, Logger).
Conséquences positives
- Couverture réelle : les contraintes DB sont exercées.
- Faux positifs disparaissent.
- Confiance accrue dans le refactor.
Conséquences négatives
- Tests un peu plus lents qu'avec mock pur (acceptable).
- Quelques tests fonctionnels passent en intégration (DatagridMapper final notamment).
Alternatives examinées
- Mock EntityManager complet — rejeté : illusion de couverture.
- MariaDB testcontainers — rejeté : trop lourd.
Références
- tests.html
tests/Service/AbstractServiceTest.php