Sto provando a essere proattivo riguardo alla scrittura di un'app per iOS in modo guidato dai test. Tuttavia, sono perplesso su come testare un metodo che è quello di interagire con i file di sistema reali. Per chi ha familiarità con iOS, sto scrivendo sul file NSUserDefaults
.
Ecco il mio set-up: ho un singleton chiamato AppState
che sto usando per registrare quando i dati scaricati da Internet sono stati sincronizzati l'ultima volta localmente. Altre classi possono aggiornare la proprietà dateLastSynced
di AppState
. Sto sovrascrivendo il metodo setDateLastSynced
per salvare quell'aggiornamento nel sistema in modo che sia persistente tra l'apertura e la chiusura dell'app:
- (void)setDateLastSynced:(NSDate *)dateLastSynced
{
// update instance variable with new value
_dateLastSynced = dateLastSynced;
// store change to NSUserDefaults
[[NSUserDefaults standardUserDefaults] setObject:dateLastSynced forKey:APP_STATE_DATE_LAST_SYNCED_KEY];
[[NSUserDefaults standardUserDefaults] synchronize];
}
Mi piacerebbe scrivere un test che verifichi che setDateLastSynced
funzioni correttamente, ma non sono sicuro di come farlo senza sovrascrivere i dati già salvati nel sistema in NSUserDefaults
.