Le altre risposte sono molto buone, ma insegnano solo cose super base. Non entrano nei dettagli dei test dei completionHandlers, delle chiamate di rete, dei controller, di come deridere, ecc.
Non sono andato completamente TDD, ma ho avuto questa domanda da qualche mese. Avevo l'obiettivo di impararlo, perché sapevo che era qualcosa che i reclutatori avrebbero amato e che migliora la qualità del mio codice.
Ma il problema era che non conoscevo abbastanza Swift. Non ero abbastanza a mio agio/esperto per scrivere rapidamente delegati, completionHandlers, o affrontare/comprendere i problemi di multithreading.
Ora sono più capace. Ma poi ho un altro problema! Cioè, come scrivere codice modulare e non far trapelare le cose che devono essere nella View o nel Model, al livello del Controller.
Quindi al momento sto cercando di non far trapelare nulla al Controller. Il che significa che devi fare MVC nel modo giusto (che avrebbe ancora alcuni problemi) o fare MVVM.
Fino a quando non conosci abbastanza Swift e puoi venire con una buona architettura di codice, ti suggerisco di non provare TDD. Mi ci è voluto circa 1 anno per acquisire l'esperienza necessaria per iniziare TDD.
Per quanto riguarda le fonti:
- Prima capisci il ciclo TDD red green refractor scritto da Yvette Cook. Approssimativamente il succo è:
assumendo che abbiamo codice di 'produzione' e codice di 'test'
Senza scrivere una sola linea di codice di produzione, scrivo prima un test. Non inizio nessun codice di produzione. Scrivo codice di produzione solo se i miei test falliscono (rosso). Una volta che i miei test passano (verde), aggiungo altri test che significano di nuovo rosso, il che significa di nuovo che devo scrivere codice di produzione per far passare i test (verde). Questo ciclo finisce una volta che ho tutte le caratteristiche della mia unità. (Anche se non si può e non si deve mai avere il 100% di copertura del codice, è stupido, ma in generale più è meglio è!)
- Ho letto Test-Driven iOS Development with Swift. Il libro è fantastico. Ho imparato il massimo con questo libro. Vale i soldi. Mi ha anche aiutato a migliorare sia le mie competenze di architettura che quelle di Swift. Ti aiuta a scrivere test relativi alle chiamate ViewControllers/Network e ti aiuta a prendere in giro le tue classi.
- Vedi questa risposta e il video a cui si collega: Cos'è il Mocking? Il video ti aiuta anche a migliorare le tue capacità di architettura.
C'è anche il test UI che è diverso, specialmente per quanto riguarda le app che sono guidate dalle risposte che ottengono da una chiamata di rete. Ma questo aumenterebbe solo la portata della domanda e dovrei parlare di cose di cui la mia conoscenza è insufficiente.