Sto tentando di provare a utilizzare il test unitario per la prima volta nella nuova attività iOS per lavoro. Adoro l'idea dei test unitari, ma trovo sempre le specifiche per essere ... disordinato.
Ricevo i principi generali: ne ho letto molto e volevo porre una domanda specifica.
La mia situazione:
-
Ho un UITableView che può avere ovunque da 10 a 10.000 elementi. Mi piacerebbe fare il caricamento parziale. Carica i primi 100 o giù di lì, e poi quando l'utente scorre a metà strada, carica i successivi 100. O qualcosa del genere.
-
Le mie chiamate al DB sono asyc (non lo controllo, anche se penso che potrei bloccare e aspettare il thread principale se lo volessi davvero).
Il mio primo pensiero è di avere un NSMutableArray e una funzione per caricare / aggiornare i dati nel mio UIViewController. Devo anche tenere traccia di se il caricamento dei dati è terminato e se i dati vengono attualmente ricaricati (perché si tratta di una chiamata asincrona). Tuttavia, mi chiedo se sia meglio suddividere questo nella propria classe per testabilità? Chiamiamolo SmartMutableArray?
Le mie preoccupazioni sono
- Se lo faccio, richiede più selettori di prima. Ho già bisogno di creare una richiamata per la mia chiamata al database, e ora ho bisogno di crearne un'altra per consentire a UIViewController di essere avvisato al termine del caricamento di SmartMutbleArray. Penserei che questo rende il mio codice più difficile da leggere.
- Poiché il mio nuovo array viene aggiornato in background, penso di aver bisogno di usare
self performSelectorOnMainThread:@selector(addObjectsFromArray:) withObject:response.balances waitUntilDone:YES];
per aggiornare il nuovo array nella mia nuova classe SmartMutableArray. Il che mi sembra strano, che questa classe abbia bisogno di sapere che si tratta di un'origine dati per un elemento dell'interfaccia utente. - Se non lo faccio, devo testare tutto questo caricando indirettamente chiamando i miei comandi delegati UITableView.
Ho aperto la strada alla creazione della nuova classe per questo elenco ... ma sono curioso di sapere che le persone con più esperienza pensano a qualcosa di simile. È eccessivo?
Grazie per qualsiasi input, mi dispiace per la lunghezza. Per favore fatemi sapere se mi mancano tutti i dettagli che sarebbero utili però.