2009-09-23 17 views
19

Nunca he hecho ninguna prueba en javascript. Sé que sé. Pero la razón es que nunca antes había creado grandes aplicaciones de JavaScript, así que nunca he visto ninguna razón para entrar en las pruebas.introducción a la prueba unitaria en javascript

Pero ahora me di cuenta de que ya es hora de romperme.

El único problema es que donde quiera que vaya, cada marco de prueba parece depender del hecho de que la gente ya sabe cómo para probar con javascript, solo se centran en por qué su marco de prueba es mejor que el siguiente.

Lo que me gustaría es una introducción muy básica a las pruebas con javascript. ¿Cuándo es necesario? ¿Qué debería probar? ¿Cómo deberían configurarse las pruebas? ¿Con qué frecuencia pruebas? Ya sabes, algo muy, muy básico.

por lo que cualquier enlaces a los textos o videos será altamente apreciado. (:

Gracias

edición: Sólo para dejar en claro: Lo que estoy buscando es introducciones a las pruebas, los marcos no específicos . Debido a que en este momento, ni siquiera sé por qué debería probar ...

Y si hay algunos libros sobre el tema, que sería aún mejor.

2da edición: Encontré un video realmente bueno desde Nicholas Zakas on Yahoo! Theatre, donde primero explica la práctica de TDD para javascript, luego explica cómo usar las pruebas de YUI para lograr esos objetivos.

Respuesta

3

Las pruebas unitarias en general le permiten crear una batería de pequeñas pruebas que verifican los bits de grano fino de su código, especialmente las cajas de borde. Esto es especialmente útil en Javascript, donde su aplicación debe ejecutarse de la misma manera en diferentes plataformas de navegador.

Crear un conjunto de tales pruebas le permite asegurarse de que los cambios que realice hoy no rompan el código que escribió ayer (o hace un mes).

Por ejemplo, puede tener una parte de su aplicación que recorre todos los nodos DOM en el documento para encontrar y enlazar a los nodos que le interesan. Usted decide optimizar esto, tal vez usando el selector jquery. Si tiene una prueba de que todos los nodos posibles se pueden encontrar correctamente, puede ver rápidamente si los cambios que acaba de realizar rompieron cualquier cosa en cualquiera de sus navegadores de destino.

También puede "simular" las interacciones de XmlHttpRequest con el servidor usando varios marcos: esto le permite verificar que su código de cliente pueda reaccionar adecuadamente a todo tipo de resultados y errores que vuelven de su back-end.

Básicamente, como en otros idiomas, las pruebas unitarias en JS le permiten automatizar la respuesta a la pregunta "¿Acabo de romper algo" con estos cambios?

0

JsUnit (ya no se mantiene)

JsUnit es un marco de pruebas unitarias para del lado del cliente (en el navegador) JavaScript. Es esencialmente un puerto de JUnit a JavaScript. También se incluye una plataforma para automatizar la ejecución de pruebas en varios navegadores y máquinas múltiples que ejecutan diferentes sistemas operativos .

3

Las pruebas unitarias en JavaScript, aunque impresionante, no es probable que el paquete de delicias que las pruebas de unidad se encuentra en la mayoría de los otros idiomas.

La razón principal de esto es que Javascript es tan dependiente de qué navegador se está ejecutando en - además de comportamiento asincrónico es tan ubicuo que puede ser un poco intimidante para empezar con él.

Aquí hay algunas cosas que pueden ayudarlo a comenzar, solo que no espere una entrada increíblemente fácil, ni las ganancias inmediatas que otros idiomas tienden a obtener.

John Resig hicieron un excellent writeup sobre las limitaciones de las pruebas en javascript que podría ser un buen lugar para comenzar.

Aquí está un video al comenzar a escribir pruebas para javascript BDD en fireunit.

2

Encuentro Javascript unittesting a menudo necesario en llamadas XHR (AJAX). Usted escribe pruebas de unidad para afirmar que la respuesta es la que espera que sea. El desarrollo basado en pruebas en el lado del servidor y del cliente puede ayudarlo a controlar el problema: ¿se envían suficientes parámetros? ¿Algo se destrozó en el camino? ¿El serializador se está comportando como esperaba? Las pruebas se configuran como en cualquier otro entorno: reduzca y simplifique para aislar el problema.

Para cosas muy básicas, le recomiendo que comience a depurar con Firebug (estableciendo puntos de interrupción y similares), y luego continúe con la prueba unitaria con Selenium.

+1

Agradable. Gracias. Ya llegué al punto en que utilizo puntos de interrupción en Firebug, simplemente nunca pensé en eso como "prueba" por decir, simplemente depuración. Entiendo que las pruebas son más un ataque preventivo contra errores, mientras que los puntos de interrupción son una forma de curar (: – peirix

+1

Correcto. Personalmente, me pareció bastante fácil pasar de establecer puntos de interrupción en Firebug, escribir pequeñas afirmaciones y luego moverme gradualmente a Selenio. La depuración interactiva con Firebug es factible cuando la aplicación es lo suficientemente pequeña. A medida que la aplicación aumenta de tamaño, te sentirás frustrado al pasar por las mismas funciones una y otra vez, personalmente, fue entonces cuando me di cuenta de la importancia de la prueba unitaria. Asegúrese de que el resto de su programa esté funcionando cuando esté depurando una función específica. – artagnon

+0

Como una ventaja adicional, Selinium también es un complemento de Firefox como Firebug. – artagnon

Cuestiones relacionadas