Sto cercando di scrivere un paio di classi usando i principi SOLID e avendo qualche problema.
Il problema è abbastanza semplice. Ho un'applicazione che tiene traccia dei lead. I lead vengono creati quando gli eventi vengono sollevati dal cliente, ad es. Download di file, registrazione, visualizzazione di pagina, ecc. Un lead può avere più opportunità, ad esempio opportunità per prodotti diversi.
- Un lead dovrebbe essere creato se non esiste.
- Un'opportunità dovrebbe essere creata per quel lead, se non esiste
- Il punteggio principale dovrebbe essere incrementato in base a una tabella di punteggio di eventi
Il modo in cui volevo farlo era avere una classe LeadEventHandler che chiami tre servizi TrackLead, TrackOpportunity e IncrementLeadScore. Sembra ok, ma testare LeadEventHandler mi ha richiesto di usare any-instance che è un odore di codice.
Nota So che potrei testare l'intera catena in LeadEventHandler, ma per motivi di apprendimento volevo testare da solo. Avrei potuto iniettare le dipendenze in LeadEventHandler, ma questo non sembrava corretto.
Sarebbe bello se permettessi ai test di guidare il mio codice, ma mi sembra di imbattersi in parecchi ostacoli.