Como muchas cosas en el mundo del JavaScript, hay muchas opciones para probar tu código. Para ayudarte a ahorrar tiempo al configurar un proyecto, he destacado algunas de mis herramientas de prueba de JavaScript favoritas.
¿Por qué la unidad prueba su JavaScript?
Si aún no pruebas tu JavaScript, te preguntarás por qué quieres probar el código del lado del cliente. Si has visto las herramientas que salen del desarrollo del lado del cliente últimamente, sabes que el desarrollo del lado del cliente se está volviendo cada vez más interesante y complejo, lo que significa que los estándares de calidad del código (como las pruebas unitarias), deben ser adoptados por el front end.
La regla simple es esta: Si tiene lógica (nos escribimos a nosotros mismos), necesita pruebas. Y ya que estamos poniendo más y más lógica en nuestro frente, ¡necesitamos pruebas! Las pruebas de la unidad facilitan la refactorización y aseguran la calidad del código. JavaScript no está exento de esta declaración. Ahora, continuemos con las herramientas.
Las mejores herramientas de prueba de JavaScript
Jazmín: Mi favorita de los marcos de prueba de unidades de JavaScript, Jasmine, usa una taxonomía de desarrollo basada en el comportamiento donde describes un conjunto de pruebas, haces que… debería (o esperas… a) expectativas.
Es muy fácil empezar en Jasmine, porque si eres nuevo en las pruebas de unidad en JavaScript, los autores tienen convenientemente distribuciones autónomas de Jasmine que pueden ser ejecutadas en un navegador (a través de una página HTML que carga tus scripts, el test runner y tus scripts de prueba).
Una simple prueba de Jazmín dice algo así:
describe("Mi maravillosa función", function() { it("debería ser muy guay", function() { expect(myfunction()).toEqual("cool"); });});
He probado otros marcos de prueba de la unidad, y sigo volviendo a Jasmine. Es compatible con mis otras herramientas y los programas de prueba, y el formato de descripción de las pruebas hace que sean fáciles de leer (suponiendo que las escribas bien).
Mocha: Mocha es una herramienta de prueba todo en uno que le permite elegir su taxonomía preferida (afirmar, esperar, debería), y una larga lista de características que incluyen notificaciones, informes de cobertura y más. Se instala fácilmente con npm, el gestor de paquetes de nodos, y puedes instalarlo globalmente para obtener algunos ayudantes adicionales.
Uno de los aspectos más destacados (y criticados) de Mocha es que es un marco un poco «mágico». Si pones tus pruebas en una prueba/carpeta, Mocha sabe dónde están. Ejecutar tu conjunto de pruebas es tan simple como ejecutar el comando «mocha».
Y una característica divertida: Entre los muchos reporteros proporcionados, Mocha incluye a un reportero nyan. Esto le permite ver el progreso/resultados de su conjunto de pruebas (también hay muchos reporteros «regulares», como un reportero punto estándar, o un reportero estilo TAP).
Karma: Un «espectacular» corredor de pruebas para JavaScript (el proyecto se llamó originalmente Testacular), Karma es tan fácil de poner en marcha para hacer sus pruebas de JavaScript. Su test runner es importante para su proceso, por lo que esperamos que esté o planee eventualmente ejecutar sus pruebas en un ambiente de integración continua para ayudar a asegurar la calidad del código.
El Karma se instala fácilmente con npm, y tiene una utilidad de línea de comandos para ayudarle a configurar su configuración. Lo llevo a cabo en mi blog, y es impresionantemente fácil de configurar. Si planeas hacer tus pruebas sin un navegador GUI, puedes hacerlas con PhantomJS, un navegador WebKit sin cabeza (o puedes usar SlimerJS, un navegador Gecko/Mozilla sin cabeza).
Otros instrumentos de prueba
Como se mencionó anteriormente, hay muchas herramientas de prueba. Quería compartir mis favoritas, pero también es bueno saber qué más hay por ahí.
Por ejemplo, si te mueves más hacia un Node.js o una pila de JavaScript frontal y trasera, y encuentras que Mocha es un poco demasiado mágico, el node-tap es un gran y simple paquete de herramientas que se está haciendo más popular en la comunidad Node. Otros marcos de pruebas unitarias incluyen QUnit, que se inspiró en la familia de pruebas xUnit, y YUI Test, que se utiliza en Yahoo!
También hay otras opciones para los corredores de prueba, como la cucharilla (para los desarrolladores de Rails) o el YUI Yeti. YUI Yeti en particular puede ser interesante, ya que tiene la opción de salida XML para los que corren Jenkins para su integración continua. Mientras tanto, Teaspoon hace muy fácil integrar las pruebas de JavaScript en un flujo de trabajo de Rails.
Esto sólo cubre las herramientas de prueba de la unidad. Si estás interesado en pruebas de extremo a extremo, o pruebas de integración, te recomiendo que compruebes CasperJS para los scripts del navegador. No pierdas de vista el transportador si estás interesado en AngularJS. Protractor ayuda a configurar una página con datos falsos para facilitar la prueba de las aplicaciones de AngularJS (una sola página).
Si queremos asegurar la calidad del código del lado del cliente, tenemos que ser más rigurosos en traer nuestras mejores prácticas para la calidad del código. Afortunadamente, hay muchas herramientas muy bien estudiadas disponibles para hacer pruebas de unidad de JavaScript (gracias en parte a que JavaScript también es un lenguaje de lado del servidor ahora).
¿Me he perdido alguna herramienta que te resulte útil? ¡Hágamelo saber en los comentarios!
¿Listo para probar tus habilidades en JavaScript? Vean cómo se acumulan con esta evaluación de Smarterer. Comienza este test de JavaScript ahora