2011-03-20 13 views
36

Hay más de 30 frameworks de prueba listados en el node.js module list ...Marco de prueba unitaria para node.js que específicamente admite la prueba de código asíncrono?

¿Qué frameworks 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 tiene muchas devoluciones de llamada asíncronas (probablemente como la mayoría de los otros proyectos de nodos). Además, estoy buscando algo bastante simple y pequeño que complejo.

Hasta ahora He mirado en:

  • Nodeunit es sencillo y apoya código asíncrono, ya que permite definir el número de afirmaciones que espera a ser llamado y cuando se realiza una prueba.
  • Vowsjs parece 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?

Respuesta

35

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 expresso. should.js se usa a menudo con Mocha para permitir aserciones de estilo BDD.

Elija lo que elija, recomiendo usar gently para stub core o módulos de terceros.

Uso/mantengo testosterone, un pequeño marco de prueba que se ejecuta en serie para que pueda abusar suavemente. Sin embargo, no mucha gente lo está usando.

2

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. This tutorial y las otras partes del tutorial vinculado 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.

+3

Para que lo sepas, Sinon también está disponible para nodeunit. De hecho, nodeunit se basó originalmente en la API QUnit, pero se actualizó para facilitar mucho las pruebas de la unidad asíncrona. Como una ventaja adicional, nodeunit también puede ejecutar pruebas en el navegador si desea compartir el código con el lado del cliente :) – Caolan

9

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.

2

No lo he usado todavía pero ¿qué pasa con Jasmine de Pivotal Labs?

+0

parece que esto cabría! – FutuToad

+0

He estado usando mocha para pruebas unitarias últimamente. –

+0

¿por qué usa usarlo contra Jasmine? – FutuToad

0

enchufe menor para mi propia biblioteca, pero lo más importante sólo quiero otros desarrolladores arnés para pensar en lo que es una prueba asíncrono en JS debe verse como:

escribí específicamente OKJS porque QUnit era tan inútil asíncrona. Quinit no capta las excepciones (!) Y requiere un inicio hacky() para mantener un registro de la profundidad.

Muchos de los frameworks de prueba no tienen un envoltorio de devolución de llamada simple para probar los tiempos de espera y capturar 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 atrapa excepciones en los detectores de eventos, y realiza un seguimiento de las solicitudes asíncronas pendientes con un gatillo de hombre muerto interal que puede fallar 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 este estilo de soporte de 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.

0

test-studio es un paquete npm que proporciona un potente front end basado en la 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.

Más información al respecto here.

Cuestiones relacionadas