web-dev-qa-db-fra.com

Test JavaScript Jasmine vs Mocha pour Rails 3.1+

J'ai de l'expérience avec Jasmine et j'aime beaucoup ça. Quelqu'un a-t-il de l'expérience avec Jasmine et Mocha, spécifiquement pour Rails? Je me demande s'il vaut la peine de passer à.

74
LupineDev

J'ai fait des tests sur Jasmine et Mocha. Tout d'abord, le changement est relativement facile. Le modèle BDD describe et it de base est identique. Vous devrez modifier la façon dont vous effectuez vos assertions et basculer vers une autre interface pour les tests asynchrones. Dans l'ensemble, ils sont comparables.

L'interface asynchrone de Mocha est beaucoup plus simple et plus cohérente. Les tests et la configuration peuvent être synchrones ou asynchrones, ce qui est génial. Ceci, plus le fait que TJ Holowaychuck est un poète de code épique sont de bonnes raisons d'essayer Mocha.

Je pense que les matchers Jasmine sont plus faciles à lire et plus élégants, surtout lorsqu'ils sont associés au plugin jasmine-jquery. Mocha est généralement associé à une bibliothèque distincte pour les assertions, souvent chai.js si vous effectuez des tests dans le navigateur ou should.js pour les tests de nœuds uniquement. Je suis satisfait de l'interface assert.equal() de chai, mais le style Jasmine expect($("#central_errors").html()).toContain("must provide a name"); me semble plus élégant. Je ne suis pas un fan de l'interface de style chai.js expect(42).to.be.above(41) avec des phrases délimitées par des points car cela ne fonctionne pas bien sur le plan auditif.

En fin de compte, c'est une question de préférence personnelle et je vous encourage fortement à passer une journée ou deux à écrire des tests Mocha au lieu de Jasmine et à voir ce que ça fait. Un investissement tout à fait valable, même si vous décidez de vous en tenir à Jasmine, vous le ferez à partir d'un lieu de connaissance de première main et aurez une conscience d'autres façons de résoudre certains des problèmes que Jasmine résout. Je l'ai essayé et je m'en tiens à Mocha en partie parce que parier sur TJ est un bon pari, mais Jasmine est également une bibliothèque mature, solide et largement adoptée.

119
Peter Lyons

Découvrez le projet Teabag sur github. Il vous permet spécifiquement d'utiliser le pipeline d'actifs avec Mocha, Jasmine ou QUnit.

https://github.com/modeset/teaspoon

Mocha est une très bonne bibliothèque, mais j'utilise généralement Jasmine - pour moi, il s'agit principalement de connaissances et d'expérience avec Jasmine, mais Mocha a des fonctionnalités vraiment intéressantes - comme vous permettre de savoir quand vous saignez des choses dans la portée mondiale.

J'ai pensé qu'il valait la peine de mentionner le projet car il vous permet spécifiquement de jouer avec les deux (dans différentes suites) afin que vous puissiez décider par vous-même.

4
jejacks0n