Aktualisieren:
Mokka ist meiner Meinung nach der beste.
Wie ist die Erfahrung mit diesen Frameworks?
Ich habe mit Expresso gespielt , einem ziemlich coolen Test-Framework, das auch Test-Coverage bietet. Es wurde von TJ Holowaychuk geschaffen, der auch der Schöpfer ist Express.js (irrsinnig schnell (und kleine) serverseitige JavaScript - Framework Web - Entwicklung gebaut auf Node.js und Connect). Ich habe kürzlich gesehen, dass er auch eine coole Bibliothek namens should.js hat , die zusammen mit Expresso für ein noch besseres Testerlebnis verwendet werden kann.
Die Möglichkeit, im Browser ausgeführt zu werden, wäre natürlich ein großer Bonus
Ich glaube nicht, dass es im Browser ausgeführt werden kann, aber ich verstehe auch nicht, warum Sie es im Browser ausführen möchten?
aber ich interessiere mich hauptsächlich für Node.js. Etwas mit einer stark asynchronen Neigung wäre großartig.
Zitat aus dem Expresso:
Das an jeden Rückruf übergebene Argument lautet beforeExit. Mit diesem Argument wird normalerweise bestätigt, dass Rückrufe aufgerufen wurden.
Mit beforeExit können Sie asynchrone Funktionen testen.
TIPP : Folgen Sie TJ Holowaychuk auf GitHub , da er sehr guten Open-Source-Code erstellt.
Ich verwende VowsJS , ein einfach zu verwendendes asynchrones BDD-Framework (Behavior Driven Development), und erledige die Arbeit.
Nach dem, was ich in letzter Zeit gesehen habe, haben sich viele entschieden, ihre NPM-Module zu testen. Daher glaube ich, dass es bisher eines der besten ist.
Einige beliebte Test-Frameworks, die mit NodeJS verwendet werden könnten, sind auch folgende:
Sie können auch eine Liste der JavaScript - Test - Frameworks finden Sie hier
Nur wenige weitere Bibliotheken, die Ihnen beim Schreiben von besserem Code helfen könnten, sind folgende:
Es gibt auch Bamboo CI Server von Atlassian , der Builds und Tests automatisiert. Es ist ein Paket für Apache / Tomcat (das sux, weil es Java verwendet und das es sehr schwer macht) ist ebenfalls nicht kostenlos, aber es hat eine Starterlizenz, die 10 US-Dollar kostet, also glaube ich, dass es erschwinglich ist. Es ist der leistungsstärkste aller bisher gefundenen CI-Server und unterstützt alle Komponententests, die xUnit unterstützen. Dies bedeutet, dass Sie mit Bamboo Builds / Tests für jede Sprache ausführen können.
Eine weitere Option für CI mit NodeJS ist Travis, die viele Leute für ihre Open Source-Projekte verwenden, wie es heißt. Ein gehosteter kontinuierlicher Integrationsdienst für die Open Source-Community.
Es gibt auch eine Google-Gruppendiskussion mit dem Thema " Kontinuierliche Integration für Node JS-Projekte" .
quelle
Basierend auf den obigen Kommentaren des Fragestellers habe ich Gelübde ausprobiert und es hat viele Probleme gelöst, die ich mit meinen asynchronen Tests hatte. Die Fähigkeit, serielle und parallele Tests zu mischen, ist fantastisch.
Lesen Sie die Anleitung sorgfältig durch, aber sobald Sie den Dreh raus haben, ist sie flexibel, leistungsstark und liefert schöne, saubere Ergebnisse.
UPDATE: Ich würde die Leute auch ermutigen, sich nach ihren Behauptungen umzusehen. Es ermöglicht sehr flexible, gut lesbare Asserts und ist sowohl mit Expresso als auch mit Vows und wahrscheinlich auch mit den meisten anderen Test-Frameworks kompatibel.
(Ich poste dies als separate Antwort, nur für den Fall, dass die Leute die Kommentare zu Alfreds Antwort nicht bemerken.)
UPDATE 07.01.2015: Für das, was es wert ist, habe ich seitdem von Gelübden zu Mokka und von Sollte zu Chai gewechselt. Mocha bietet jetzt eine viel bessere Unterstützung für asynchrone Tests mit Versprechungen, und Chai bietet verschiedene flexible Assert-Optionen, einschließlich der
expect
API, für diejenigen, die den Objektprototyp nicht ändern möchten.quelle
should
greift eine nicht aufzählbare Eigenschaftshould
an, die demObject
Prototyp zugeordnet ist, was bedeutet, dass alle Werte / Objekte, mit denen Sie sich befassen, zur Testzeit und zur Produktionszeit etwas anders aussehen . Während dies in den meisten Fällen wahrscheinlich nur funktioniert, ist es im Prinzip eine schlechte Idee, eingebaute Prototypen zu modifizieren. es nur während des Testens zu tun, fühlt sich falsch an. Es wurde alles nur gemacht, damit sie eine schöne Syntax haben können.should
ohne zu erweiternObject.prototype
(einfach aufrufenrequire('should').noConflict()
und should.js als erwartete Alternative verwenden.Ich habe angefangen, Jasmine für meine JavaScript-Tests zu verwenden, weil es klein ist und sowohl im Browser als auch im Knoten ausgeführt wird. Es hat auch eine wirklich solide Berichts- und Matcher-API, so dass es in Zukunft einfach in andere Tools integriert werden kann. Ein eingebautes Mocking-Framework ist ebenfalls nützlich, da es oft eines der ersten Dinge ist, die ich hinzufügen würde, wenn ich qunit für TDD im Browser verwendet habe.
quelle
Wenn Sie ein echtes BDD-Framework wünschen, sollten Sie Yadda in Betracht ziehen . Es lässt sich in Mokka, Jasmin, Nodeunit, Qunit, Zombie und Casperjs integrieren, um Feature-Dateien zu unterstützen, z
quelle
Ich habe Nodeunit verwendet und seine Fähigkeit, mit asynchronen Funktionen zu arbeiten, ist ziemlich einfach.
Es gibt eine nette Anleitung, die Sie bereit machen sollte, mit nodeunit auf seinem Blog loszulegen .
[ Hinweis: Die API hat sich seit dem Blogpost geändert -
setUp(callback)
undtearDown(callback)
beide verwenden einen Rückruf als Argument, das Sie aufrufen müssen, wenn Ihr Setup / Teardown abgeschlossen ist. ]]quelle