Jasmine Framework-Tutorial: Unit-Tests mit Beispiel
⚡ Intelligente Zusammenfassung
Jasmine ist verhaltensorientiert JavaEin Framework für Skripttests, das Node.js-Unit-Tests ohne Browser oder DOM ausführt und dabei describe-Blöcke, specs und expect-Matcher verwendet, um zu überprüfen, ob sich jede exportierte Funktion wie dokumentiert verhält.

Was ist JasmineJS?
Jasmine ist ein Open-Source- und sehr beliebtes JavaSkriptbibliothek-Testframework zum Testen aller Arten von JavaSkriptanwendung. Jasmine folgt dem Behavior Driven Development (BDD)-Verfahren, um sicherzustellen, dass jede Zeile JavaDie Skriptanweisung wird ordnungsgemäß auf Komponenten getestet.
Wofür wird das Jasmine Framework verwendet?
Tests sind ein Schlüsselelement jeder Anwendung. Für Unit-Tests in Node.js steht das Framework Jasmine zur Verfügung. Anfang der 2000er-Jahre gab es bereits ein Framework für Tests. JavaSkript Anwendungen namens JsUnit. Later Dieses Framework wurde aktualisiert und ist jetzt als Jasmine bekannt.
Jasmine hilft bei der Automatisierung Unit Tests, etwas, das sich bei der Entwicklung zu einer wichtigen Praxis entwickelt hatping und die Bereitstellung moderner Webanwendungen.
In diesem Jasmine-Tutorial erfahren Sie, wie Sie Ihre Umgebung mit Jasmine einrichten und Jasmine-Tests für Ihre erste Node.js-Anwendung ausführen.
Jasmine zum Testen von Node.js-Anwendungen
Jasmin ist ein Verhaltensgesteuerte Entwicklung (BDD) Testframework für JavaSkript. Es tut kein Frontalunterricht. verlassen sich auf Browser, DOM oder andere JavaSkript-Framework. Daher eignet es sich für Websites. Node.js Projekte oder überall dort, wo JavaDas Skript kann ausgeführt werden. Um Jasmine verwenden zu können, müssen Sie zunächst die erforderlichen Jasmine-Module herunterladen und installieren.
So richten Sie die Jasmine-Testumgebung ein
Im nächsten Schritt dieses Jasmine-Node.js-Tutorials müssen Sie Ihre Umgebung initialisieren und die Jasmine-Konfigurationsdatei überprüfen. Die folgenden Schritte zeigen, wie Sie Jasmine in Ihrer Umgebung einrichten.
Schritt 1) Installieren Sie NPM-Module
Du brauchst Installieren Sie NPM Das Jasmine-Modul ermöglicht die Nutzung des Jasmine-Frameworks innerhalb einer Node-Anwendung. Um das Modul jasmine-node zu installieren, führen Sie den folgenden Befehl aus.
npm install jasmine-node
Versionshinweis (2026): Der oben genannte historische Befehl funktioniert noch, aber Jasminknoten Das Modul befindet sich im Wartungsmodus und verwendet Jasmine 1.3. Verwenden Sie es daher nur für ältere Projekte. Neue Node.js-Versionen installieren die gewartete Version. Jasmine CLI als Entwicklungsabhängigkeit und ruft es über npx auf:
npm install --save-dev jasmine npx jasmine init
Jasmine 6.x ist die aktuelle Hauptversion und unterstützt Node.js 20, 22 und 24, wobei Node.js 24 die aktive LTS-Version im Jahr 2026 ist.
Schritt 2) Initialisieren Sie die Jasmine-Umgebung
Projektinitialisierung – Dabei erstellt Jasmine automatisch ein Verzeichnis „spec“ und eine Konfigurationsdatei (JSON). Im Verzeichnis „spec“ werden alle Testdateien gespeichert. So weiß Jasmine, wo sich Ihre Tests befinden und kann sie entsprechend ausführen. JSON Die Datei dient zum Speichern spezifischer Konfigurationsinformationen über Jasmine.
Um die Jasmine-Umgebung zu initialisieren, führen Sie den folgenden Befehl aus:
jasmine init
Schritt 3) Überprüfen Sie Ihre Konfigurationsdatei.
Die Konfigurationsdatei wird im Ordner spec/support als jasmine.json gespeichert. Diese Datei listet die Quelldateien und Spezifikationsdateien auf, die der Jasmine-Runner einschließen soll.
Der untenstehende Screenshot zeigt ein typisches Beispiel der jasmine.json-Datei für Jasmine.
- Beachten Sie, dass hier das Spezifikationsverzeichnis angegeben wird. Wie bereits erwähnt, sucht Jasmine beim Ausführen nach allen Tests in diesem Verzeichnis.
- Als nächstes ist der Parameter „spec_files“ zu beachten. Dieser gibt an, dass den erstellten Testdateien das Schlüsselwort „spec“ angehängt werden sollte.
Konfigurationshinweis: In Jasmine 6.x akzeptiert dieselbe Datei auch Helfer, die einmal vor jeder Spezifikation geladen werden, und ein env Der Block enthält Optionen wie random und stopSpecOnExpectationFailure. Der Standard-Glob-String für spec_files ist **/*[sS]pec.?(m)jsund eine andere Datei kann übergeben werden –config oder unter der JASMINE_CONFIG_PATH variabel.
Als nächstes lernen wir in diesem Jasmine-Framework-Tutorial, wie man Jasmine zum Testen von Node.js-Anwendungen verwendet.
So verwenden Sie Jasmine zum Testen von Node.js-Anwendungen
Um Jasmine Unit Testing für Node.js-Anwendungen verwenden zu können, müssen eine Reihe von Schritten befolgt werden.
In unserem folgenden Beispiel definieren wir ein Modul, das zwei zu testende Zahlen addiert. Dazu erstellen wir eine separate Codedatei mit dem Testcode und verwenden anschließend Jasmine, um die Additionsfunktion zu testen.
Schritt 1) Definieren Sie den zu testenden Code. Wir werden eine Funktion definieren, die zwei Zahlen addiert und das Ergebnis zurückgibt. Dieser Code wird in eine Datei namens „Add.js“ geschrieben.
Der untenstehende Screenshot zeigt das fertige Add.js-Modul, und der gleiche Code wird darunter als Text wiederholt.
var exports=module.exports={}; exports.AddNumber=function(a,b) { return a+b; };
Code Erläuterung
- Das Schlüsselwort „exports“ wird verwendet, um sicherzustellen, dass andere Dateien tatsächlich auf die in dieser Datei definierte Funktionalität zugreifen können.
- Anschließend definieren wir eine Funktion namens „AddNumber“. Diese Funktion ist so definiert, dass sie zwei Parameter annimmt, a und b. Die Funktion wird dem Modul „Exports“ hinzugefügt, um die Funktion als öffentliche Funktion zu machen, auf die andere Anwendungsmodule zugreifen können.
- Endlich sorgen wir dafür, dass unsere Funktion den Mehrwert der Parameter zurückgibt.
Schritt 2) Als Nächstes müssen wir unseren Jasmine-Testcode definieren, mit dem wir unsere „Add“-Funktion in der Datei Add.js testen. Der folgende Code muss in eine Datei namens „Add.js“ eingefügt werden. add-spec.js.
HinweisDas Wort „spec“ muss der Testdatei hinzugefügt werden, damit es von Jasmine erkannt werden kann.
Der folgende Screenshot zeigt dieselbe Spezifikationsdatei, geöffnet in einem Editor.
var app=require("../Add.js"); describe("Addition",function(){ it("The function should add 2 numbers",function() { var value=app.AddNumber(5,6); expect(value).toBe(11); }); });
Code Erläuterung
- Wir müssen zuerst unsere Add.js-Datei einbinden, damit wir die Funktion „AddNumber“ in dieser Datei testen können.
- Wir erstellen jetzt unser Testmodul. Der erste Teil des Testmoduls besteht darin, eine Methode zu beschreiben, die unserem Test im Grunde einen Namen gibt. In diesem Fall lautet der Name unseres Tests „Addition“.
- Als nächstes geben wir eine Beschreibung für unseren Test mit der „it“-Methode.
- Wir rufen nun unsere AddNumber-Methode auf und übergeben ihr die beiden Parameter 5 und 6. Diese werden an die AddNumber-Methode in der Datei Add.js übergeben. Der Rückgabewert wird anschließend in einer Variablen namens „value“ gespeichert.
- Der letzte Schritt ist der Vergleich bzw. unser eigentlicher Test. Da wir erwarten, dass die Funktion AddNumber den Wert 11 zurückgibt, definieren wir dies mit der Methode expect(value).toBe(der erwartete Wert).
Ausgang
- Um den Test auszuführen, muss man den Befehl jasmine ausführen.
- Der folgende Screenshot zeigt, dass Jasmine nach Ausführung des Befehls erkennt, dass ein Test namens „add-spec.js“ vorhanden ist, und diesen entsprechend ausführt. Eventuelle Fehler werden angezeigt.
Das Add-Beispiel verwendet nur einen einzigen Matcher, Jasmine liefert jedoch einen vollständigen Satz davon aus. Die folgende Tabelle listet diejenigen auf, die nahezu jede Assertion abdecken, die Sie schreiben werden.
Jasmine Matchers – Die wichtigsten Funktionen, die Sie am häufigsten verwenden werden
Ein Matcher ist der Vergleich, der auf expect() folgt. Verkette .not vor einen beliebigen Matcher, um ihn umzukehren, wie in expect(value).not.toBe(11).
| Matcher | Was wird geprüft | Typische Verwendung |
| zu sein | Strenge Identität, derselbe Vergleich wie === | expect(value).toBe(11) |
| gleich | Tiefe Gleichheit von Objekten und Arrays | expect(user).toEqual({id: 1}) |
| enthält | Zugehörigkeit zu einem Array oder einer Zeichenkette | expect(files).toContain('add-spec.js') |
| noch zu definieren | Der Wert ist nicht undefiniert. | expect(app.AddNumber).toBeDefined() |
| werfen | Die umschlossene Funktion löst einen Fehler aus | expect(callAdd).toThrow() |
| toHaveBeenCalled | Mindestens einmal wurde ein Spion eingesetzt. | expect(logger.write).toHaveBeenCalled() |
Zwei Gewohnheiten sorgen dafür, dass Fehler lesbar bleiben. Verwenden Sie `toBe` nur für primitive Datentypen und identische Referenzen, da zwei Objekte mit gleichem Inhalt niemals `===` entsprechen. Verwenden Sie `toEqual` für Strukturen und fügen Sie `toHaveBeenCalledWith` hinzu, wenn die Argumente genauso wichtig sind wie der Aufruf selbst.
Aufbau, Abbau und Spione in Jasmine
Echte Suiten benötigen einen gemeinsamen Status und zusätzliche Arbeitsumgebungen für langsamere Kollaborateure. Jasmine bietet beides ohne zusätzliche Pakete.
- vor jedem und nach jedem Führe den Befehl vor und nach jeder Spezifikation innerhalb eines describe-Blocks aus, der der natürliche Ort zum Neuerstellen von Fixtures ist.
- vor allem und nach allem Führen Sie die Befehle einmal für den gesamten Block aus, daher sollten sie für aufwändige Arbeiten wie das Öffnen einer Verbindung reserviert werden.
- spyOn(object, 'method') ersetzt eine reale Methode durch eine tracking double; add .and.returnValue() to control what it returns.
- jasmine.createSpy('name') Erstellt ein eigenständiges Double für einen Callback, der kein Objekt zum Anhängen hat.
- Asynchrone Spezifikationen kann als async und await deklariert werden, kann ein Promise zurückgeben oder kann einen done-Callback akzeptieren, der genau einmal aufgerufen werden muss.
Spione werden zwischen den Tests zurückgesetzt, sodass eine Testsuite niemals eine simulierte Methode in den nächsten Test weitergibt. Diese Isolation bewirkt, dass ein fehlgeschlagener Test auf einen einzelnen Fehler hinweist und nicht auf eine ganze Kette von Fehlern – genau die gleiche Vorgehensweise, die im Folgenden beschrieben wird. Unit-Test Grundlagen.
Jasmine vs Mocha vs Jest
Jasmine ist eines von drei Frameworks, die dominieren. JavaBeim Testen von Skripten hängt die Wahl meist davon ab, wie viel Verkabelung man selbst besitzen möchte.
| Aspekt | Jasmin | Mocha | ist |
| Behauptungen | Erbaut im | Hinzugefügt, üblicherweise Chai | Erbaut im |
| Spione und Spott | Erbaut im | Hinzugefügt, üblicherweise Sinon | Erbaut im |
| Ausführung | Seriell | Seriell | Parallele Prozesse |
| Snapshots | Nein | Nein | Ja |
| Gemeinsames Zuhause | Angular, reines Node.js | Flexible Node.js-Stacks | React und moderne Bundler |
Pick Mocha wenn Sie Ihren eigenen Assertions- und Mocking-Stack zusammenstellen möchten, und ist Bei parallelen Ausführungen sind Testabdeckung und Snapshots wichtiger als die Konfigurationskontrolle. Jasmine bleibt die ressourcenschonendste Option, die dennoch vollständig ist, weshalb sie weiterhin weit verbreitet ist. Automatisierungstests Suiten.




