Hace poco, he visto una charla técnica impartida por Damian Nicholson titulada Writing (testable | maintainable | scalable | rock solid) JavaScript, que traduzco libremente como Escribiendo JavaScript sólido como una roca.
En la charla, Damian analiza varios aspectos de porqué es difícil testear cierto código JavaScript y finaliza contando su experiencia escribiendo código para evitar todos esos errores.
Consejos
A lo largo de la charla, Damian suelta unos cuantos pequeños consejos:
- JavaScript + Unit testing = Good code
- Apóyate en los objetos. Según el conferenciante, los objetos te llevarán a diseñar clases, éstas a agruparlas en módulos, y los módulos a organizar mejor tus ficheros JavaScript.
- Sobretodo, uno debería testear su API pública, aunque no limitarse a ella.
Problemas a la hora de testear código JavaScript
A través de un sencillo snipet de código, Damian expone algunos de los problemas más comunes a la hora de escribir código JavaScript que lo hace difícilmente testeable:
- Funciones anónimas.
- Acoplamiento fuerte con el DOM, por ejemplo en el uso y abuso de ids en elementos HTML
- Hacer llamadas al servidor mezcladas con otra lógica de nuestra aplicación.
- Callbacks anidados.
- Mezclar código HTML y JavaScript, por ejemplo, excribiendo templates HTML a fuego en JavaScript.
Su propia experiencia
- usar data-attributes para parametrizar, o configuraciones. Depender menos de ids en los elementos HTML.
- Conocer el ciclo de vida de los frameworks que utilizamos, y engancharnos a los eventos del ciclo que dirigen el proceso.
- Aislar nuestra aplicación de los detalles de plugins de terceros (gran consejo éste).
- Apóyate en mixins. Con ellos podrás extender la funcionalidad de tus objetos, de una forma parecida a la herencia, aunque muy diferente a ella.
- Mantén funcionalidades privadas en ámbitos privados (patrón módulo).
Conclusión
Es una charla eminentemente práctica, por lo que es totalmente recomendable si quieres conocer de primera mano buenos consejos sobre cómo escribir código JavaScript testeable.
No estoy de acuerdo en todos los consejos que comenta Damian, pero la voz de la experiencia tiene muchísimo valor, por lo que la charla me parece fenomenal.