Stiamo avendo un po 'di discussione in ufficio su come implementare buoni test di integrazione.
Esempio:
Creazione di account
1. Creare utente
2. Aggiungi ruolo
Un caso che testiamo è, se esiste già un utente con lo stesso indirizzo email. Per questo, ho prima creato un utente (programmaticamente) e poi ho provato a creare un account con la stessa email.
Ora l'argomento era, che dovevo fare il seeding del nostro DB con questo utente esistente e SOLO provare a creare un account (non ho il primo CreateUser nel test). Dato che in questo modo, test anche implicitamente la parte "CreateUser" e aggiunge funzionalità al test che non sono necessarie, il che potrebbe portare il test a fallire per i motivi sbagliati.
Il mio punto era che è più facile creare l'utente a livello di programmazione e che la funzione CreateUser è già stata testata altrove. In questo modo hai tutti i dati contenuti in questo caso di test, quindi è più facile da capire.
Cosa ne pensate di questo?