Non riesco a decidere come reimpostare il codice giusto. Diciamo che ho un pezzo ipotetico logico complesso:
public class ImageService
{
public void UploadImage(VectorData data) {
var image = ConvertVectorDataToImage();
var thumbnail = CreateThumbnail(image);
SaveThumbnail(thumbnail);
SaveImage(image);
SendEmail(image);
...
}
}
(Se qualcosa nell'esempio è fuori dalla singola responsabilità, facciamo finta di poter fare un esempio migliore)
Se faccio visualizzare UploadImage (pubblico), i test di scrittura diventano complicati. Tendono ad essere lunghi, difficili da leggere e, se si desidera evitare la duplicazione del codice, viene visualizzata la logica dei test.
Se faccio vedere tutti quei piccoli pezzi visibili, l'API diventa caotica (perché nel mio esempio, l'unica cosa interessante per tutti è il metodo UploadImage). Ancora peggio, dopo un po 'di tempo le persone tenderanno a usare quei piccoli metodi, perché sono pubblici, non perché dovrebbero essere usati al di fuori della classe.
Quindi la mia domanda è: come si bilancia tra visibilità e complessità del test? O sto facendo qualcosa di sbagliato al primo posto?