Actualizar:
Mocha es el mejor en mi opinión.
¿Cuál es la experiencia con estos marcos?
Jugué con expresso, que es un marco de prueba bastante bueno que también tiene cobertura de prueba. Ha sido creado por TJ Holowaychuk, quien también es el creador de Express.js (marco de desarrollo web JavaScript del lado del servidor increíblemente rápido (y pequeño) basado en Node.js y Connect). Hace poco vi que también tiene una biblioteca genial llamada should.js que se puede usar junto con Expresso para una experiencia de prueba aún mejor.
Obviamente, la capacidad de ejecutar en el navegador sería una gran ventaja
No creo que pueda ejecutarse en el navegador, pero tampoco entiendo por qué querrías ejecutarlo dentro del navegador.
pero estoy principalmente interesado en Node.js. Algo con una inclinación muy asincrónica sería genial.
Cita del expreso:
El argumento pasado a cada devolución de llamada es beforeExit, que generalmente se utiliza para afirmar que se han invocado devoluciones de llamada.
Puede usar beforeExit para probar funciones asincrónicas.
CONSEJO: Siga a TJ Holowaychuk en GitHub , porque crea un muy buen código de código abierto.
Utilizo VowsJS, que es fácil de usar async BDD framework (Behavior Driven Development) y hago el trabajo.
Por lo que veo últimamente, es lo que muchos optaron por probar sus módulos NPM, así que creo que hasta ahora es uno de los mejores para usar.
Algunos marcos de prueba populares que podrían usarse con NodeJS también son aquellos:
También puede ver una lista de marcos de prueba de JavaScript aquí
Pocas bibliotecas más que podrían ayudarlo a escribir un mejor código son las siguientes:
También hay Bamboo CI Server de Atlassian, que automatiza compilaciones y pruebas. Es un paquete para Apache / Tomcat (que sux porque usa Java y que lo hace muy pesado) tampoco es gratuito, pero tiene una licencia de inicio que cuesta $ 10, así que creo que es asequible. Es el más destacado de todos los servidores de CI que encontré hasta ahora y admite todas las pruebas unitarias que admiten xUnit, lo que significa que puede ejecutar compilaciones / pruebas para cualquier idioma con Bamboo.
Otra opción para CI con NodeJS es Travis, que muchas personas usan para sus proyectos de código abierto, como dice Un servicio de integración continua alojado para la comunidad de código abierto.
También hay una discusión grupal de Google con el tema Integración continua para proyectos de Nodo JS .
fuente
En base a los comentarios anteriores del autor de la pregunta, probé votos y resolvió muchos problemas que tenía con mis pruebas asíncronas. Su capacidad para mezclar pruebas en serie y paralelas es increíble.
Asegúrese de leer detenidamente el documento de orientación, pero una vez que lo aprenda, es flexible, potente y produce resultados agradables y limpios.
ACTUALIZACIÓN: También sería animar a la gente a la salida debe por su asevera. Permite afirmaciones muy flexibles y legibles, y es compatible tanto con Expresso como con Votos, y probablemente también con la mayoría de los otros marcos de prueba.
(Estoy publicando esto como una respuesta separada en caso de que la gente no note los comentarios sobre la respuesta de Alfred).
ACTUALIZACIÓN 1/7/2015: Por lo que vale, desde entonces he cambiado de Votos a Mocha, y debería de Chai. Mocha tiene mucho mejor soporte ahora para las pruebas asincrónicas usando promesas, y Chai permite varias opciones de afirmación flexibles, incluida la
expect
api, para aquellos a quienes no les gusta modificar el prototipo del objeto.fuente
should
agrega una propiedad no enumerable nombradashould
alObject
prototipo, lo que significa que todos los valores / objetos con los que está tratando se ven ligeramente diferentes en el momento de la prueba y en el momento de la producción. Si bien esto probablemente 'simplemente funciona' en la mayoría de los casos, en principio es una mala idea modificar los prototipos incorporados; hacerlo solo durante las pruebas se siente mal. Todo se ha hecho únicamente para que puedan tener una buena sintaxis.should
sin extenderObject.prototype
(simplemente llamerequire('should').noConflict()
y use should.js como una alternativaComencé a usar Jasmine para mis pruebas de JavaScript específicamente porque es pequeño y se ejecuta tanto en el navegador como en el nodo. También tiene una API de informes y comparación realmente sólida, por lo que es fácil de integrar con otras herramientas en el futuro. Tener un marco burlón de construcción también es útil, ya que a menudo es una de las primeras cosas que agregaría cuando estaba usando qunit para TDD en el navegador.
fuente
Si desea un verdadero marco de BDD, entonces tal vez considere Yadda . Se integra con mocha, jazmín, nodeunit, qunit, zombie y casperjs, para admitir archivos de características, por ejemplo
fuente
He estado usando nodeunit y su capacidad para trabajar con funciones asíncronas es bastante sencilla.
Hay un buen tutorial que debería estar listo para usar con nodeunit en su blog .
[ Nota: la API ha cambiado desde la publicación del blog,
setUp(callback)
ytearDown(callback)
ambos toman una devolución de llamada como argumento, al que debe llamar cuando se completa su configuración / desmontaje. ]fuente