2012-03-14 10 views

Respuesta

119

He hecho pruebas en Jasmine y Mocha. Primero, cambiar es relativamente fácil. El patrón BDD básico describe y it es idéntico. Tendrá que cambiar la forma en que hace sus afirmaciones y cambiar a una interfaz diferente para las pruebas asincrónicas. En general, son comparables.

La interfaz asincrónica de Mocha es mucho más simple y consistente. Las pruebas y la configuración pueden ser síncronas o asincrónicas, lo cual es genial. Esto, más el hecho de que TJ Holowaychuck es un poeta del código épico, son buenas razones para probar Mocha.

Creo que los matchers de Jasmine son más fáciles de leer y más elegantes, especialmente cuando se combinan con el plugin jasmine-jquery. Mocha generalmente se combina con una biblioteca separada para las aserciones, a menudo chai.js si está realizando pruebas en el navegador o should.js para las pruebas de solo nodo. Estoy contento con la interfaz assert.equal() de chai, pero el estilo Jasmine expect($("#central_errors").html()).toContain("must provide a name"); me parece más elegante. No soy partidario de la interfaz de estilo chai.js expect(42).to.be.above(41) con oraciones delimitadas por puntos porque no funciona bien de forma auditiva.

En última instancia, esta es una pregunta de preferencia personal y le recomiendo encarecidamente que pase un día más o menos escribiendo pruebas de Mocha en lugar de Jasmine y vea cómo se siente. Totalmente una inversión que vale la pena, incluso si decides quedarte con Jasmine lo harás desde un lugar de conocimiento de primera mano y tendrás conciencia de otras formas de resolver algunos de los problemas que Jasmine resuelve. Lo intenté y me quedé con Mocha en parte porque apostar por TJ es una buena apuesta, pero Jasmine también es una biblioteca madura, sólida y ampliamente adoptada.

+0

Gracias Peter! Solo el tipo de observaciones que estaba buscando :) – LupineDev

+7

¡Hola, Peter, gran reseña! Solo para agregar, con Chai, también puedes obtener una interfaz tipo Jasmine ("bdd"): http://chaijs.com/code/expect.html De hecho, puedes mezclarla y combinarla con la afirmación (" tdd ") interfaz. De forma análoga a jasmine-jquery, también hay un plugin chai-jquery, aunque es bastante nuevo. –

+6

Sí, tanto chai como mocha tienen múltiples interfaces. Como mencioné anteriormente, no me gusta la interfaz chai bdd/expect porque no encuentro útiles todos esos puntos. –

4

Consulte el proyecto Teabag en github. Específicamente, le permite utilizar la canalización de activos junto con Mocha, Jasmine o QUnit. de

https://github.com/modeset/teaspoon

Mocha una muy gran biblioteca, pero normalmente usar Jasmine - para mí es principalmente sobre el conocimiento y experiencia con Jasmine, pero Mocha tiene algunas características interesantes - como lo que le permite saber cuando está sangrando cosas en el alcance global.

Pensé que valía la pena mencionar el proyecto porque específicamente le permite jugar con ambos (en diferentes suites) para que pueda decidir por sí mismo.