test pruebas node framework javascript jquery unit-testing mocking qunit

javascript - pruebas - npm chai



¿Cuáles son algunos JavaScript Unit Testing y Mocking Frameworks que ha utilizado? (14)

Mi principal marco de JavaScript es jQuery, por lo que me gustaría que mi prueba de unidad y frameworks de burla sean compatibles con eso. Prefiero no tener que introducir otro marco de JavaScript.

Actualmente estoy usando QUnit para las pruebas unitarias y Jack para las burlas, pero soy bastante nuevo en las pruebas unitarias de JavaScript.

¿Alguien más tiene una mejor herramienta para sugerir? ¿Qué ha funcionado para usted?


¡No estoy seguro de por qué nadie ha mencionado JsTestDriver ! Tiene que ser una de las únicas herramientas de JS Testing que realmente funciona como usted esperaría si hubiera usado herramientas de pruebas unitarias en otros idiomas.

Ejecutar pruebas puede hacerse sin tocar un navegador, puede integrarlo con IDE, puede integrarlo con sistemas de integración continua ... Ah, y es rápido, y puede ejecutar pruebas en múltiples navegadores al mismo tiempo.

También puede usar otros marcos de prueba como YUITest con él, lo que lo hace aún mejor.


Creo que Jack es el mejor marco burlón para JavaScript en el momento de escribir esto. La razón principal es que lo que es correcto para JavaScript no es lo que es correcto para un lenguaje fuertemente tipado como Java.

Muchos marcos de simulación de JavaScript están inspirados en frameworks simulados de Java (como el excelente JsMockito, por ejemplo). Pero el problema con estos es que requieren inyección de dependencia, porque esa es la única forma razonable de usar burla en Java. Pero en JavaScript, hay MUCHAS formas de usar el burlarse, y no estás obligado a utilizar la inyección de dependencia en todas partes.

Por ejemplo, con JsMockito, tienes que hacer burlas y luego pasar esas burlas a tu software bajo prueba (SUT). El SUT tiene que llamar directamente a los simulacros. Por lo tanto, está obligado a codificar el SUT como un constructor o función que toma todas sus dependencias como parámetros. (A veces, esa es una buena forma de implementarlo, pero no en todos los casos. La cola menea al perro si el diseño de tu burla obliga a tu enfoque de implementación).

En JavaScript, es muy fácil "secuestrar" cualquier función. Por lo tanto, hay muchísimas formas de crear algo de modo que pueda simular partes de él sin inyectar explícitamente sus dependencias en él. Por ejemplo, Jack le permite simular cualquier función, ya sea pública o en un objeto local. Desde allí, puede espiarlo, colgarlo o expresar expectativas sobre él. El punto clave es este: una vez que se ha burlado de una función, CUALQUIER llamada a esa función original será dirigida a su simulacro . En otras palabras, tus simulacros seguirán usándose aunque se haya llamado a la función original no imitada. Como resultado, no está obligado a inyectar dependencias, aunque ciertamente puede hacerlo en los casos que lo requieran.

JavaScript es un idioma diferente que Java (y C #, etc.) Permite diferentes idiomas de implementación. La inyección de dependencia sigue siendo una herramienta valiosa en la caja de herramientas en JavaScript, pero ya no es el único juego en la ciudad. Su marco burlón necesita saber y respetar ese hecho. Jack y un par de otros lo hacen, pero de los que sí lo hacen, Jack parece ser el más maduro y rico en funciones.


CrossCheck parecía extremadamente poderoso cuando lo miré, pero no lo hemos incorporado a nuestro proceso de compilación en este momento. Tiene la ventaja de ser sin navegador, y por lo tanto debería funcionar bien en un escenario automatizado de compilación y prueba.

http://thefrontside.net/crosscheck




Para burlarse de JavaScript, eche un vistazo a qMock , un marco que un colega y yo escribimos para complementar nuestro uso de QUnit. Aunque este último es ideal para pruebas unitarias, no permite pruebas de asincronía / lógica de negocios muy efectivas. No hemos etiquetado ningún lanzamiento como estable, pero hay algunos documentos decentes allí, y si usted realiza el check-out del svn, verá qmock tiene pruebas unitarias detrás de él que son bastante auto explicativas.

Ah, y para automatizar las pruebas como parte de la compilación, usamos un script de selenio simple para navegar por nuestra suite de pruebas (una página de prueba por archivo JS) y "escuchó" para una clase CSS aprobada o no (agregada por QUnit). Esto funciona sin cabeza también para IE / FF2 AFAIK


Para el desarrollo de mozilla, me enamoro de UXU , basado en MozUnit pero aún activo. Tiene buenas características como el servidor simulado o los métodos sleep / yeld.


Podría probar HtmlUnit, que tenía una versión compatible con JQuery hace más de un año.

La ventaja de HtmlUnit es que no controla un navegador, por lo que es RÁPIDO.

La desventaja es que no está manejando un navegador, entonces hay algunas cosas de JS que no funcionarán. Pero compensando que pueden ejecutar las pruebas de JQuery para que el soporte de JS sea lo suficientemente bueno para lo que necesita.



También echa un vistazo a http://sinonjs.org/

Espías de prueba Trozos de prueba Mocks Fake timers Fake XHR Fake server Afirmaciones de Sandboxing

Funciona junto con qUnit y eso ha sido una ventaja hasta el momento.


Utilizo el marco de prueba de Screw Unit y escribí mi propia biblioteca de burla llamada jsMocha, que ha estado en uso intensivo en la empresa en la que trabajo durante más de 6 meses.


Prueba YUI
TDD con prueba YUI

YUI Test es el marco de prueba para la biblioteca de interfaz de usuario de Yahoo. Yahoo lo usa para probar su propia biblioteca y tiene una sintaxis similar a jUnit.

Al igual que jsUnit, YUI Test viene con su propia consola de registro que puede generar información, advertencias y errores además de los resultados de cada prueba.

YUI también proporciona la capacidad de enviar informes sobre los resultados en formato JSON o XML.

La prueba YUI tiene licencia BSD.

Pros
- Muy buena documentación
- Comunidad activa
- Lanzamientos regulares
- La sintaxis es similar a jUnit (suites de prueba, afirmaciones y configuración / desmontaje)
- Soporte asincrónico
- Bueno para las pruebas DOM
- Las pruebas siempre se ejecutan secuencialmente en el orden en que se agregan a una suite

Contras
- La automatización no es trivial de implementar, pero es menos difícil que otros frameworks


QUnit
jQUnit
Escribir pruebas JS con QUnit y jQUnit

QUnit es el marco de pruebas unitarias para el marco de jQuery JavaScript. El marco de prueba en sí utiliza la biblioteca jQuery, pero las pruebas se pueden escribir para cualquier JavaScript y no requieren que el código use jQuery. JQUnit es una versión modificada de QUnit que agrega funciones de configuración, desmontaje y afirmación que son más típicas de un marco xUnit, y encapsula todo en una variable global.

La interfaz visual de la página de testrunner es agradable, lo que le permite profundizar y ver cada afirmación en cada método de prueba. Escribir pruebas es bastante fácil, y puede ejecutar el código de prueba directamente en la página testRunner [8]. Esto permite pruebas de DOM fáciles y visibles.

QUnit: MIT o GPL (elegir) jQUnit: Licencia MIT

Pros
- Soporte asincrónico
- Bueno para las pruebas DOM
- Las pruebas siempre se ejecutan secuencialmente en el orden en que se agregan a una suite
- Depurar en la página de prueba usando firebug
- La sintaxis es similar a JUnit si se usa JQUnit, pero es fácil de aprender si se usa QUnit
Contras
- La automatización sería difícil de implementar


JsUnit se ejecuta desde el navegador, a través de su complemento Eclipse, o automáticamente a través de una tarea ANT. Usted crea una página HTML con un conjunto de funciones de prueba, que debe nombrarse con el prefijo ''prueba'', e incluye el archivo JS que está probando. Cuando falla cualquier afirmación dentro de una función, la función completa falla y deja de ejecutarse. No hay un orden garantizado en el que se ejecuten estas pruebas. Puede crear funciones de setup() y de teardown() .

Licencia: GPL, GLPL, MPL

Pros

  • La automatización es relativamente fácil de implementar
  • Mucha funcionalidad
  • La sintaxis es similar a JUnit

Contras

  • No es bueno para las pruebas DOM ya que ejecuta pruebas dentro de un iFrame.
  • No hay garantía de que las pruebas se ejecutarán en el orden en que se escriben.
  • No se puede usar Firebug en la página de testrunner. Necesita tener otra pestaña abierta con el código de prueba real.