C#, nUnit e Rhino Mock, se risulta essere applicabile.TDD e DI: iniezioni di dipendenza che diventano ingombranti
La mia ricerca con TDD continua mentre tento di avvolgere i test attorno a una funzione complicata. Diciamo che sto codificando un modulo che, una volta salvato, deve anche salvare gli oggetti dipendenti all'interno del modulo ... risposte per formare domande, allegati se disponibili e voci di "registro" (come "blahblah ha aggiornato il modulo." O "blahblah ha allegato un file."). Questa funzione di salvataggio spegne anche le e-mail a varie persone a seconda di come lo stato del modulo è cambiato durante la funzione di salvataggio.
Ciò significa che per testare completamente la funzione di salvataggio del modulo con tutte le sue dipendenze, devo iniettare cinque o sei fornitori di dati per testare questa unica funzione e assicurarsi che tutto si sia sparato nel modo giusto e nell'ordine. Questo è ingombrante quando si scrivono i costruttori multipli concatenati per l'oggetto modulo per inserire i provider derisi. Penso che mi manchi qualcosa, sia nel modo di refactoring o semplicemente un modo migliore per impostare i fornitori di dati derisi.
Devo studiare ulteriormente i metodi di refactoring per vedere come questa funzione può essere semplificata? Come suona lo schema dell'osservatore, in modo che gli oggetti dipendenti rilevino quando il modulo genitore viene salvato e si gestiscono da soli? So che la gente dice di dividere la funzione in modo che possa essere testata ... nel senso che metto alla prova le singole funzioni di salvataggio di ciascun oggetto dipendente, ma non la funzione di salvataggio del modulo stesso, che stabilisce come ciascuno si deve salvare nel primo posto?
sarebbe d'aiuto nel suggerire miglioramenti se si desidera mostrare il vostro codice. –