Attualmente sto provando a testare una classe di file manager. Questa classe è responsabile di tenere traccia di quanto a lungo il file è buono. Il file avrà una data scritta che indica quando è stato generato e la durata della durata del file. I consumatori della mia interfaccia saranno agnostici a questi dettagli. L'interfaccia ha il seguente aspetto:
public interface IFileManager
{
bool GenerateFile(string location);
bool DeleteFile(string location);
bool IsFileValid(string location);
bool Update(string customerID, string location);
}
Mi preoccupo di come testare uno di questi metodi, in particolare IsValid(string location)
. Parte dell'implementazione che sto pianificando per IsValid
sarà quella di verificare se il file è scaduto, così come il file che non contiene solo spazzatura.
Ok, ecco il mio enigma. Scrivo sempre i miei test unitari in un progetto separato, in cui hanno solo un riferimento a una libreria di interfaccia. Cioè, eseguo il test di tutto tramite un'interfaccia in modo che i miei test di unità conoscano solo IFileManager
. Quindi, da un'interfaccia di alto livello, come posso testare un'implementazione specifica di un file "scaduto" o "spazzatura"?
La mia interfaccia non consente a un client di detta interfaccia di creare un file che è già scaduto. E questo ha senso per me! Inoltre, non voglio aggiungere funzionalità alla mia interfaccia solo per essere in grado di testare! I miei pensieri su come posso testare questo, mi danno un odore di codice.