Unit test che verificano davvero
Logica pura senza montare componenti, e il codice che rende i mock inutili
Una suite può avere ottantotto test e un mutation score del 19%: il problema quasi mai è nel mocking, è nel codice che ti costringe a mockare. La serie parte da cosa si può testare senza montare niente, mostra dove i mock diventano una toppa, e arriva al refactoring che li rende superflui.
Ottantotto test, e un mutation score del 19%
La reazione istintiva davanti a una suite che non trova niente è dare la colpa ai mock: mockiamo troppo, mockiamo male, i test verificano i mock invece del codice. Quasi sempre è la diagnosi sbagliata.
Il problema di solito non è nel mocking: è nel codice che vi costringe a mockare. Una connessione a Kafka aperta a livello di modulo, un client MongoDB creato all'import, un singleton che si inizializza da solo: ognuna di quelle righe rende impossibile istanziare la logica senza tirarsi dietro mezzo sistema, e i mock diventano la toppa.
La serie parte dall'altro capo: quanto si può verificare senza montare niente. Settantadue test su store, composable e helper, e nessun componente montato. Poi mostra dove i mock stanno nascondendo un problema di progettazione. E finisce con il refactoring che li rende superflui: application factory, dipendenze iniettate, e nessun sys.modules da manomettere.
Cosa imparerai
- ✓ Testare la logica pura senza montare un solo componente
- ✓ Riconoscere quando un mock sta nascondendo un problema di progettazione
- ✓ Rendere testabile un servizio con application factory e dependency injection
Articoli della serie
- 01Unit test in Nuxt 3: 72 test senza montare un singolo componente 9 min
72 unit test in Nuxt 3 testando solo logica pura: store Pinia, composable, helper API. Zero dipendenze aggiunte, zero componenti montati.
→ - 02Il tuo servizio Flask è impossibile da testare (e non è colpa dei mock) 14 min
88 test, tre servizi Flask, mutation score al 19%. Il problema non è nel mocking - è nel codice che crea connessioni Kafka e MongoDB al momento dell'import.
→ - 03Microservizi Flask testabili: application factory, DI e zero sys.modules hack 9 min
Tre servizi Flask con connessioni Kafka e MongoDB al top-level, refactoring a application factory con dependency injection. Da 228 righe di conftest a 148.
→