javascript - tutorial - pruebas unitarias node js
Marco de prueba unitaria para node.js que específicamente admite la prueba de código asíncrono? (6)
Hay más de 30 marcos de prueba listados en la lista de módulos node.js ...
¿Qué marcos son los más populares? ¿Y cuáles son sus pros y contras?
Estoy buscando un marco que admita pruebas unitarias de código que tenga muchas devoluciones de llamada asincrónicas (probablemente como la mayoría de otros proyectos de nodos). Además, estoy buscando algo bastante simple y pequeño que complejo.
Hasta ahora he investigado:
- Nodeunit es sencillo y admite el código asincrónico al permitirle definir cuántas aserciones espera recibir y cuándo se realiza una prueba.
- Vowsjs ve interesante. Le permite estructurar muy bien las pruebas y viene con muchas características avanzadas. ¿No está seguro de si estas características son realmente útiles o si se interponen en su camino?
Desde marzo de 2012, hemos estado usando Nodeunit y no hemos mirado hacia atrás. Es sencillo y fácil de usar, le permite elegir entre dispositivos de nivel de módulo y nivel de clase (configuración / desmontaje), tiene un conjunto razonable de aserciones integradas y su herramienta de línea de comandos es muy flexible. Intenta combinarlo con nodemon , también.
Vimos un Votos brevemente pero no queríamos una nueva sintaxis extraña para definir las pruebas. Todo lo que necesita son afirmaciones, accesorios y un arnés decente, y Nodeunit encaja perfectamente.
Enchufe menor para mi propia biblioteca, pero lo más importante es que quiero que otros desarrolladores de arnés piensen en lo que debería ser una prueba asincrónica en JS:
Escribí específicamente OKJS porque QUnit era tan inútil asincrónico. Quinit no capta las excepciones (!) Y requiere un inicio hacky () para mantener un registro de la profundidad.
Muchos de los marcos de prueba que existen no tienen un envoltorio de devolución de llamada simple para probar los tiempos de espera y detectar excepciones. No estoy seguro de por qué los llamados de confianza son el corazón del desarrollo asincrónico. = /
setTimeout(function() {
ok( true, "Passed and ready to resume!" );
start();
}, 1000);
OKJS detecta excepciones en los detectores de eventos y realiza un seguimiento de las solicitudes asíncronas pendientes con un desencadenante de hombre muerto interno que puede no pasar la prueba.
setTimeout( unit.callback("test callback is fired"), 500);
setTimeout( unit.callback("callback fired, with subtests", function () {
unit.assert("in callback, true === true", true,true);
}), 500);
Me encantaría ver que este estilo sea compatible con las soluciones empresariales. Algunas de las otras características que recomienda OKJS son los bloques de prueba que se ejecutan en serie (estilo de receta), pero esperan entre bloques para que se resuelvan los eventos.
Todavía no lo he usado, pero ¿qué pasa con Jasmine de Pivotal Labs?
QUnit es tan simple como se puede obtener un marco de prueba, y admite llamadas asíncronas. Es la herramienta de prueba para JQuery, por lo que puede estar seguro de que es altamente compatible y funciona bien.
Puede considerar la integración con Sinon , que es un marco de burla, que en particular le permite simular eventos asincrónicos. Este tutorial y las otras partes del tutorial vinculadas allí muestran cómo usar Sinon para probar el código asíncrono. Está en el navegador, pero debería poder adaptarlo a las aplicaciones de nodo de prueba.
expresso y vows son las opciones más populares. Aunque hay muchas buenas opciones por ahí. Actualización: a partir de noviembre de 2011, Mocha es el sucesor de expresso , según el archivo Readme.md en el repositorio de expresso . should.js se usa a menudo con Mocha para permitir aserciones de estilo BDD.
Elija lo que elija, le recomiendo usarlo con gently en los módulos centrales o de terceros.
Uso / mantengo la testosterone , un pequeño marco de prueba que se ejecuta en serie para poder abusar suavemente. Sin embargo, no mucha gente lo está usando.
test-studio es un paquete npm que proporciona un front-end potente basado en web para pruebas unitarias. Actualmente, solo es compatible con mocha y proporciona elementos como la ejecución de pruebas individuales o grupales y el paso del inspector de nodos en pruebas individuales.
Lea más sobre esto here .