Pruebas unitarias de Javascript Full Stack

Estamos buscando un marco de prueba de Javascript que pueda ejecutar pruebas en toda la pila de aplicaciones, tanto en el cliente como en el servidor. Usamos jQuery, RequireJS y Backbone.js en el cliente, y Node.js y Express en el servidor.

Se supone que Node.js simplifica la creación de aplicaciones web al proporcionar una configuración más similar tanto para el desarrollo del lado del cliente como del lado del servidor mediante el uso del mismo lenguaje (entre otros objetivos). Sin embargo, me resultó difícil realizar pruebas unitarias y generar un conjunto consistente de tecnologías que funcionen en el cliente y el servidor.

Actualmente, usamos QUnit para realizar pruebas en el cliente y Expresso y Should.js en el servidor. Tienen interfaces totalmente diferentes, lo que hace que sea muy difícil probar el código que se comparte entre el cliente y el servidor. Considere, por ejemplo, un módulo que realiza la validación, tanto el cliente como el servidor necesitan acceso a este y ambos necesitan realizar pruebas unitarias en todos los clientes y el servidor.

Esencialmente, estoy buscando ese santo grial que nos permita desarrollar aplicaciones web de manera similar a como se desarrollan las aplicaciones cliente-servidor en lenguajes como python y ruby.

preguntado el 21 de mayo de 12 a las 18:05

Pensé que actualmente no existe un estándar acordado para manejar módulos tanto para el lado del cliente como para el del servidor. Hay AMD para la declaración de módulo asíncrono (usado en el lado del cliente), y luego están los módulos en node.js que usan la implementación propuesta en commonjs:

@badunk tienes razón, eso también es un problema. Pero ahora es posible usar RequireJS en el lado del servidor. Aún no hemos hecho eso. Node.js usa un requerimiento síncrono. Hay una propuesta asíncrona llamada require.ensure() aquí: wiki.commonjs.org/wiki/Modules/Async/A.RequireJS es bastante simple después de que te acostumbras y su autor está realmente comprometido a mejorarlo. -

@yaudaev genial! gracias por el consejo ;) -

1 Respuestas

Parece que estás buscando algo como busterjs que tiene componentes del lado del servidor y del lado del cliente. Tendría un conjunto separado de pruebas para cada parte, pero la sintaxis se mantendría consistente. Simplemente especificaría su env en la configuración de buster.js así:

env: "browser", // or "node"

Esta es, con mucho, mi opción favorita de todos los marcos disponibles en este momento.

contestado el 21 de mayo de 12 a las 18:05

Esto parece una gran herramienta. Definitivamente voy a comprobar eso. - Moisés

Gracias Eric. Parece un poco joven, pero con suerte para fines de este mes obtendrán una versión 1.0 estable. Me gustan las ideas que tienen para ello :). Solo quiero asegurarme de que podemos confiar en que los resultados de la prueba no arrojarán falsos positivos ni fallarán. ¿Qué quiere decir con "Tendría un conjunto separado de pruebas para cada parte"? ¿Por qué? - Michael Yagudaev

@yagudaev Lo que quiero decir es que tendría un conjunto de pruebas configuradas para ejecutarse en modo "navegador" y otro conjunto de pruebas que se ejecutarían en modo "nodo" usando require, etc. En cuanto a la madurez, no he tenido ninguna ningún problema desde 0.5.1 y lo estoy usando para aplicaciones de producción. - eric wendelin

Al ver el video en el sitio ahora, buster es realmente brillante. Hace todo lo que estaba buscando :). Aceptaré esta respuesta, sería bueno obtener algunas alternativas más solo para completar. - Michael Yagudaev

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.