Sto per scrivere un sacco di test per la mia applicazione. Mentre alcuni test verificano se tutto funziona se l'utente inserisce i dati corretti, la maggior parte di essi gestisce dati errati / mancanti. In questi casi, nulla dovrebbe essere aggiornato e dovrebbe essere lanciata un'eccezione.
Al momento, questo porta a un sacco di codice duplicato, perché ogni test deve assicurarsi che non venga generata solo l'eccezione, ma nessun dato nel mio ( mocked in-memory) database è cambiato.
La mia prima idea è stata quella di spostare questi test in una funzione e di chiamare questa funzione in ogni test. Pro: Posso ancora usare test molto espliciti. Contro: Devo ricordare di aver cambiato la funzione e aggiungere altri test ogni volta che aggiungo più funzionalità alla funzione selezionata.
Ma potrei anche aggiungere una proprietà al mio repository in-memory mocked che indica se un'entità è stata aggiornata. Pro: Non dovrò mai preoccuparmi di un assegno dimenticato. Contro: Il controllo è abbastanza vago - Quando fallisce saprò solo che qualcosa è stato cambiato. Per trovare l'errore dovrò eseguire il debug passo dopo passo attraverso la funzione.
Qual è l'approccio migliore? Forse c'è una terza soluzione ancora migliore?