Jasmine vs. Mocha JavaScript-Test für Rails 3.1+ [geschlossen]

74

Ich habe Erfahrung mit Jasmine und mag es ziemlich. Hat jemand Erfahrung mit Jasmine und Mocha, speziell für Rails? Ich frage mich, ob es sich lohnt, zu wechseln.

LupinDev
quelle

Antworten:

119

Ich habe sowohl in Jasmine als auch in Mocha getestet. Erstens ist das Umschalten relativ einfach. Das Grund- describeund itBDD-Muster ist identisch. Sie müssen die Art und Weise ändern, wie Sie Ihre Assertions ausführen, und für asynchrone Tests zu einer anderen Schnittstelle wechseln. Insgesamt sind sie vergleichbar.

Die asynchrone Schnittstelle von Mocha ist viel einfacher und konsistenter. Tests und Einstellungen können entweder synchron oder asynchron sein, was großartig ist. Dies und die Tatsache, dass TJ Holowaychuck ein epischer Code-Poet ist, sind gute Gründe, Mokka zu probieren.

Ich denke, die Jasmine Matcher sind leichter zu lesen und eleganter, besonders wenn sie mit dem Jasmin-JQuery-Plugin kombiniert werden. Mocha wird normalerweise mit einer separaten Bibliothek für Zusicherungen gepaart, häufig chai.js, wenn Sie Tests im Browser durchführen, oder should.js, wenn nur Knoten getestet werden. Ich bin mit Chais assert.equal()Benutzeroberfläche zufrieden , aber der Jasmin-Stil expect($("#central_errors").html()).toContain("must provide a name");erscheint mir eleganter. Ich bin kein Fan der Benutzeroberfläche im chai.js- expect(42).to.be.above(41)Stil mit punktbegrenzten Sätzen, da sie akustisch nicht gut funktioniert.

Letztendlich ist dies eine persönliche Präferenzfrage und ich empfehle Ihnen dringend, nur einen Tag damit zu verbringen, Mokka-Tests anstelle von Jasmin zu schreiben und zu sehen, wie es sich anfühlt. Eine absolut lohnende Investition, selbst wenn Sie sich entscheiden, bei Jasmine zu bleiben, werden Sie dies von einem Ort aus aus erster Hand tun und sich anderer Möglichkeiten bewusst sein, um einige der Probleme zu lösen, die Jasmine löst. Ich habe es versucht und bleibe bei Mocha, auch weil das Wetten auf TJ eine gute Wette ist, aber Jasmine ist auch eine ausgereifte, solide und weit verbreitete Bibliothek.

Peter Lyons
quelle
Danke Peter! Genau die Art von Beobachtungen, nach denen ich gesucht habe :)
LupinDev
7
Hey Peter, tolles Schreiben! Mit Chai können Sie auch eine Schnittstelle im Jasmin-Stil ("bdd") erhalten: chaijs.com/code/expect.html Tatsächlich können Sie sie mit der assert-Schnittstelle ("tdd") kombinieren . Analog zu Jasmin-JQuery gibt es auch ein Chai-JQuery-Plugin, obwohl es ziemlich neu ist.
Jo Liss
6
Ja, sowohl Chai als auch Mokka haben mehrere Schnittstellen. Wie ich oben erwähne, mag ich die Chai Bdd / Expect-Oberfläche nicht, weil ich nicht alle diese Punkte hilfreich finde.
Peter Lyons
4
+1 für akustisch. Und eine großartige Zusammenfassung. Und damit der Protip sie beide ausprobiert und sieht, wie sie phalangeal funktionieren.
Scott Silvi
Gibt es Änderungen in Ihrer Antwort aufgrund von Jasmine 2.0?
Anton Rudeshko
4

Schauen Sie sich das Teebeutel-Projekt auf Github an. Sie können die Asset-Pipeline speziell zusammen mit Mocha, Jasmine oder QUnit verwenden.

https://github.com/modeset/teaspoon

Mocha ist eine ziemlich gute Bibliothek, aber ich benutze normalerweise Jasmine - für mich geht es hauptsächlich um Wissen und Erfahrung mit Jasmine, aber Mocha hat einige wirklich coole Funktionen - wie Sie wissen zu lassen, wenn Sie Dinge in den globalen Bereich bluten.

Ich dachte, es wäre erwähnenswert, das Projekt zu erwähnen, da es Ihnen speziell ermöglicht, mit beiden (in verschiedenen Suiten) herumzuspielen, damit Sie selbst entscheiden können.

jejacks0n
quelle