Las otras respuestas son muy buenas, pero sólo enseñan cosas súper básicas. No entran en detalles sobre las pruebas de completionHandlers, las llamadas a la red, los controladores, cómo hacer mock, etc.
No me he metido de lleno en TDD, pero tengo esta pregunta desde hace unos meses. Me propuse aprenderlo, porque sabía que era algo que a los reclutadores les habría encantado y que mejora mi propia calidad de código.
Pero el problema era que no sabía suficiente Swift. No me sentía lo suficientemente cómodo/experimentado como para escribir rápidamente delegados, completionHandlers, o tratar/entender los temas de multithreading.
Ahora soy más capaz. ¡Pero entonces tengo otro problema! Es decir, cómo escribir código modular y no filtrar cosas que tienen que estar en tu Vista o Modelo, a la capa del Controlador.
Así que actualmente ahora mismo estoy intentando no filtrar nada al Controlador. Lo que significa que o bien tienes que hacer MVC de la manera correcta (que todavía tendría algunos problemas) o hacer MVVM.
Hasta que no conozcas Swift lo suficiente y puedas venir con una buena arquitectura de código, te sugiero que no intentes TDD. Me tomó aproximadamente 1 año para ganar la experiencia necesaria para iniciar TDD.
En cuanto a las fuentes:
- Primero entender TDD ciclo refractor rojo verde escrito por Yvette Cook. A grandes rasgos lo esencial es:
Suponiendo que tenemos código de ‘producción’ y código de ‘prueba’
Sin escribir una sola línea de código de producción, primero escribo una prueba. No empiezo ningún código de producción. Sólo escribo código de producción si mis pruebas fallan (rojo). Una vez que mis pruebas pasan (verde), entonces añado más pruebas que vuelven a ser rojas, lo que significa que de nuevo tengo que escribir código de producción para que las pruebas pasen (verde). Este ciclo termina una vez que tengo todas las características de mi unidad. (Aunque nunca se puede ni se debe tener una cobertura de código del 100%, es una estupidez, pero en general ¡cuanto más mejor!)
- He leído Test-Driven iOS Development with Swift. El libro es genial. Con este libro es con el que más he aprendido. Vale la pena el dinero. También me ayudó a mejorar tanto mis habilidades de arquitectura como de Swift. Te ayuda a escribir pruebas relacionadas con ViewControllers/llamadas a la red y te ayuda a burlar tus clases.
- Mira esta respuesta y el vídeo al que enlaza: ¿Qué es Mocking? El video también te ayuda a mejorar tus habilidades de arquitectura.
También hay pruebas de UI que son diferentes, especialmente en lo que respecta a las aplicaciones que son impulsadas por las respuestas que obtienen de una llamada de red. Pero eso solo aumentaría el alcance de la pregunta y tendría que hablar de cosas que mis conocimientos son insuficientes.