Node.js Unit Testing [geschlossen]

164

Gibt es derzeit gute Unit-Test-Frameworks für node.js (serverseitige js)? Ich suche etwas Tieferes als das bereitgestellte Assert-Modul.

Kennzeichen
quelle

Antworten:

66

Am Ende habe ich Node-Unit verwendet und bin sehr zufrieden damit.

Ich habe ursprünglich Expresso verwendet, aber die Tatsache, dass es Tests parallel ausführt, verursachte einige Probleme. (Zum Beispiel funktioniert die Verwendung von Datenbank-Fixtures in dieser Situation nicht gut.)

böser Schmuck
quelle
25
Expresso zwingt Sie nicht dazu, Tests parallel auszuführen. Füttere es mit dem Argument --serial und es werden sie alle in fröhlicher Reihenfolge ausgeführt.
Einaros
3
Gerade heruntergeladen und verwendet nodeunit ... macht genau das, was es sagt, hat beim ersten Mal funktioniert ftw!
Michael Dausmann
1
Nodeunit ist etwas seltsam, da jeder Test .done()imho aufrufen muss.
Kos
2
Wenn ich jetzt ein neues Projekt starten würde, würde ich wahrscheinlich Mocha als Test-Framework verwenden
evilcelery
1
Die Knoteneinheit muss .done()asynchrone Tests ermöglichen. Ich bin damit einverstanden, dass es manchmal etwas unhandlich sein kann, aber es hat einen guten Grund, es so zu machen.
L0j1k
48

Ich suchte auch nach einem anständigen Test-Framework für Node und fand Mocha . Es ist der offizielle Nachfolger von Expresso und scheint sehr ausgereift zu sein.

Es ermöglicht das Einstecken verschiedener Assertionsbibliotheken, bietet Reportern für die Codeabdeckung und andere Dinge (Sie können Ihre eigenen einstecken). Es kann synchron oder asynchron ausgeführt werden und verfügt über eine übersichtliche API.

Ich werde es versuchen und berichten ...

BEARBEITEN:

Nach unglaublich viel Zeit für andere Projekte kehrte ich schließlich zu einem Javascript-Projekt zurück und hatte Zeit, mit Mokka herumzuspielen. Ich kann es ernsthaft empfehlen. Die Tests lesen sich sehr gut, die Integration mit gulp ist großartig und die Tests laufen sehr schnell. In etwa einem halben Tag konnte ich sowohl automatische Standalone- als auch In-Browser-Testläufe (browserify) und entsprechende Berichte zur Codeabdeckung einrichten (die meiste Zeit wurde damit verbracht, die Verwendung von browserify von gulp aus zu verstehen). Mokka scheint mir eine sehr gute Wahl für ein Test-Framework zu sein.

AKTUALISIEREN:

Ich bin immer noch sehr überzeugt von Mokka. Durch die Integration mit Chai können verschiedene Assertionsstile eingebunden werden. Sie können ein funktionierendes Setup in diesem Github-Projekt auschecken . Ich verwende es jetzt mit Karma und integriere Code Coverage Report, automatische Beobachter und eine gute Integration mit IntelliJ

bennidi
quelle
Die Verbindung zum Github-Projekt ist unterbrochen. Könnten Sie es bitte erneuern?
Karlisup
1
Erste Schritte
Nicholas Blasgen
15

Ich persönlich habe nur das Assert-Modul verwendet, aber ich möchte auch mehr. Ich habe viele Knotenmodule durchgesehen und beliebte Unit-Testing-Frameworks sind Node-Unit und sollten (was wird von demselben Typ wie Expresso hergestellt (vielleicht ein aktualisierter Name?)

Gelübde sehen auch vielversprechend aus.

jtsao22
quelle
15
Ich stimme dir nur für dieses Wortspiel zu.
Thomas Reggi
15

Persönlich bin ich bei Expresso geblieben , aber es gibt eine Reihe verschiedener Frameworks, die den meisten Teststilen gerecht werden.

Joyent hat eine umfangreiche Liste ; Probieren Sie es aus.

einaros
quelle
1
Expresso ist das einzige, das für mich Sinn macht und ordnungsgemäß mit asynchronem Code arbeitet. Versuchte Gelübde und Qunit auch.
Balupton
5

Gelübde ist eine solide Unit-Testing-Bibliothek für node.js, aber die Syntax ist langwierig.

Ich habe eine dünne Abstraktion geschrieben, die Gelübde fließend heißt fluent , die die API verkettbar macht.

Und ich habe eine andere Abstraktion geschrieben, [vows-is], die auf Gelübde-fließend aufbaut und eine Syntax im BDD-Stil enthüllt.

Ein Beispiel wäre

var is = require("vows-is");

is.suite("testing is fun").batch()

    .context("is testing fun?")
        .topic.is("yes")
        .vow.it.should.equal("yes")

.suite().run({
    reporter: is.reporter
});

Mehr Beispiele

Raynos
quelle
6
Amen dazu, Gelübde Syntax ist schrecklich IMO
Donn Felker
Hatte ein Spiel mit Gelübden mit dem Appeasy Wrapper. Sah nach einer guten Idee aus, um eine JSON-API zu testen, kam aber schnell zu kurz. Ich finde auch, dass Apis, die stark auf Verkettungsaufrufe wie diesen ausgerichtet sind, schwer zu verwenden und schwer zu debuggen sind. Sie sehen in Beispielen gut aus, funktionieren aber unter realen Bedingungen nicht gut.
Drekka
@drekka Gelübde und Gelübde sind schrecklich. benutze Mokka
Raynos
Ich versuche es jetzt, aber es scheint, dass ich auf ähnliche Probleme stoße.
Drekka
Sie müssen es dann falsch verwenden. Versuchen Sie, gist.github.com/2896455 zu lesen . @drekka
Raynos
0

Deadunit wurde ursprünglich für node.js entwickelt und ist eine Javascript-Unit-Testing-Bibliothek für node.js und den Browser. Einige seiner einzigartigen Eigenschaften:

  • Einfache Lernkurve
  • Kann Testergebnisse in der Befehlszeile (farbig oder im Klartext) oder als HTML ausgeben
  • Es druckt die tatsächlichen Codezeilen aus, in denen sich Ihre Behauptungen befinden, sodass Ihre Ausgabe auch dann sinnvoll ist, wenn Sie nicht viel Zeit damit verbringen, Testkommentare zu schreiben
  • Es gibt eine einfache countBehauptung, die den Umgang mit erwarteten Ausnahmen und asynchronen Behauptungen erleichtert
  • es druckt Ausnahme und aus alle angehängten Daten aus
  • Es wird Sie wissen lassen, ob Ihr Code hängt (etwas, das Sie nicht wollen, das aber normalerweise unbemerkt bleibt).
  • Verfügt über eine ereignisgesteuerte API, die das Streaming von Testergebnissen über ein Netzwerk oder auf eine beliebige Weise ermöglicht.
  • Unterstützt das Testen mit Knotenfasern
BT
quelle
0

Ich habe gerade ein Projekt hochgeladen, das ich verwende, um Nodejs mit Karma und Jasmine: Narma zu testen . Ihre Knotenmodule werden in einen Nodewebkit-Browser geladen, sodass Sie Knotenmodule ausführen und Bibliotheken wie jquery im selben Heap verwenden können.

noamtcohen
quelle
0

Teststudio ist ein npm-Paket, das ein leistungsstarkes, webbasiertes Frontend für Unit-Tests bietet. Es unterstützt Dinge wie das Ausführen einzelner oder Gruppen von Tests und das Einführen von Node-Inspector in einzelne Tests. Derzeit werden Mokka unterstützt, und bei Bedarf werden in Zukunft weitere Frameworks unterstützt.

Lesen Sie hier mehr darüber .

Haftungsausschluss: Ich bin der Autor.

Dale Anderson
quelle
1
sieht so aus, als ob das von dir geschrieben wurde, oder? In diesem Fall sollten Sie diese Tatsache in Ihrer Antwort offenlegen.
strugee