Ho una classe, cliente che ha alcune proprietà di base su di essa come firstname, surname, email, dateofbirth
. Ho scritto un'altra classe chiamata CustomerValidation
che attualmente ha un metodo pubblico e tre metodi privati. Il metodo pubblico è:
public bool ValidateCustomer(Customer customer)
Questo metodo chiama tre metodi privati che convalidano il nome, l'indirizzo email e la data di nascita del cliente inoltrato, restituendo true solo se tutti questi metodi restituiscono true.
Tuttavia, anche se per me ha senso convalidare un cliente in una chiamata, un'altra parte di me sta pensando, se collaudo questa unità, potrei passare in un cliente con più campi non validi e in realtà non sapere se ogni privato il metodo funziona correttamente, poiché solo uno di questi metodi che restituisce false potrebbe darmi un potenziale falso positivo.
Non ha senso per me scrivere test per l'API pubblica che mirano ai dettagli dell'implementazione. Quindi mi chiedo se dovrei rendere pubblici tutti i metodi, che comunque non si sentono giusti o rifattorizzare i metodi nelle loro classi e rielaborare la mia logica di validazione.