Muy probablemente tarde o temprano nos toque enfrentarnos a código que reúna dos características:
- Código sin testear
- Código altamente acoplado
Qué deberíamos hacer primero: El test, ¿o el refactoring para poder testear mejor? ¿el huevo o la gallina? Nosotros ya sabemos por qué no usar static, pero puede ser que "nuestro yo de hace 1 año", o incluso ese proyecto al que hemos llegado, haga uso de este tipo de prácticas. Puede ser que incluso ese proyecto cuente con una gran base de código sin testear. Pero esto no puede ser un problema para nosotros, nosotros hemos visto los vídeos de CodelyTV y estamos entrenados para eso y más :D En el vídeo de hoy veremos una aplicación práctica del concepto de costura o "seam". Este concepto está relacionado con una técnica que nos puede ser útil a la hora de abrirnos paso entre código que reúna las dos características antes mencionadas (acoplado y sin testear). Esta técnica nos será útil para modificar nuestro código lo mínimo e indispensable con el fin de hacerlo más fácil de testear. El procedimiento será el siguiente:
- Aplicar la técnica que veremos en el vídeo (abrir una costura)
- Desarrollar nuestro test centrado en el componente que queremos testear y obviando las clases colaboradoras con las que se acopla
- Refactorizar en profundidad, ahora sí, con la tranquilidad del test que hemos podido implementar
Como ya digo en el vídeo, esta técnica la descubrí en un meetup de Barcelona Software Craftsmanship gracias a Manuel Rivero. Si no me equivoco, la citaba del libro "Working Effectively with Legacy Code". Citar también el post original en el que está basado este vídeo: Testing legacy: Hard-wired dependencies (de Sandro Mancuso). Recordar por último que este tipo de acoplamientos se pueden ver fácilmente si sabemos escuchar a nuestros test, esa nave del misterio que vimos hace un tiempo :)