Jasmine (JavaScript -Test -Framework)
![]() | |
Entwickler (en) | Entscheidende Labors |
---|---|
Erstveröffentlichung | 14. September 2010[1] |
Stabile Version | 4.0.1 / 22. Februar 2022[2] |
Repository | |
Geschrieben in | JavaScript |
Betriebssystem | Plattformübergreifend |
Typ | Gerätetest |
Lizenz | MIT -Lizenz[3] |
Webseite | Jasmin![]() |
Jasmin ist ein Open Source Testen von Framework für JavaScript.[4] Ziel ist es, auf einer JavaScript-fähigen Plattform auszuführen, um weder in die Anwendung noch in die Anwendung einzudringen Ideund leicht zu lesende Syntax zu haben. Es wird stark von anderen Einheiten -Test -Frameworks wie Screwunit, JSSPEC, JSPEC und beeinflusst RSPEC.[5]
Geschichte
Die Entwickler von Pivotal Labs for Jasmine entwickelten zuvor ein ähnliches Rahmen für ein Einheitstest namens JSunit vor der aktiven Entwicklung von Jasmine.[6]
Merkmale
- Unterstützt asynchrone Tests.[7]
- Verwenden Sie "Spione" für die Implementierung Testen Sie Doppel.[7]
- Unterstützt das Testen von Front-End-Code durch eine Front-End-Erweiterung von Jasmine namens Jasmine-Jquery.[7]
Verwendungszweck
Jasmine zielt darauf ab, leicht zu lesen sein. Eine einfache Hallo Welt Der Test sieht aus wie der folgende Code, wobei beschreiben () eine Reihe von Tests beschreibt und IT () eine individuelle Testspezifikation ist. Der Name "it ()" folgt der Idee von Verhaltensgetriebene Entwicklung und dient als erstes Wort im Testnamen, der ein vollständiger Satz sein sollte. Die Verwendung folgt der Syntax ähnlich der von RSPEC.
Der folgende Code testet diese Funktion
Funktion Hallo Welt() { Rückkehr 'Hallo Welt!'; }
Und prüft, dass seine Ausgabe in der Tat der Text "Hallo Welt!" ist.
beschreiben('Hallo Welt', Funktion() { es('sagt Hallo', Funktion() { erwarten von(Hallo Welt()).GOBE('Hallo Welt!'); }); });
Jasmine bietet eine Menge eingebauter Matcher. Im obigen Beispiel prüft die Giftsteuer die Gleichheit zwischen dem von der Funktion HelloWorld () und der "Hallo Welt!" Saite. Dies ist dasselbe wie Behauptungen Wird in anderen Testframeworks verwendet. Jasmine -Matcher geben einen booleschen Wert zurück: wahr, wenn die Erwartung übereinstimmt (ein Weg, um anzuzeigen, dass der Test bestanden wurde) oder falsch, wenn die Erwartung nicht übereinstimmt.[7] Eine gute Praxis ist es, eine einzelne IT () -Testspezifikation zu erwarten.
Weitere eingebaute Matcher sind Tobe, Tobetruthy, Tobefalsy, Tocontain, Tobeundeded, Tobenull, Tobenan, TobeGerthan, Tobelessthan, Tobecloseto.[8] Der Identitätsübergreifende überprüft, ob zwei Dinge das gleiche Objekt sind. Die Bedingung entspricht Tobetruthy, tobefalsy bewertet, ob etwas wahr oder falsch ist und definiert, tobeundefined prüft, ob etwas definiert oder nicht definiert ist. Wie der Name schon sagt, überprüft Tbenull, ob etwas null und tobenan prüft, ob etwas keine Nummer ist (Nan). Precision Matcher Tobecloseto akzeptiert zwei Parameter und Überprüfungen, wenn eine Zahl nahe dem ersten Parameter liegt, wenn eine bestimmte Menge an Dezimalgenauigkeit gemäß dem zweiten Parameter angegeben ist. Matcher ToContain wird verwendet, um zu überprüfen, ob ein Element, ein Objekt oder eine Unterstring in einem Array, einer Liste oder einer String enthalten ist.
Der spezielle integrierte Match Tothrow wird verwendet, um zu überprüfen, ob eine Ausnahme ausgelöst wurde.[7] Der folgende Code überprüft, dass "eine Ausnahme" geworfen wird.
beschreiben("Erwarten Sie eine Ausnahme", Funktion() { es("Wirft eine Ausnahme", Funktion() { erwarten von( Funktion() { Wurf("Einige Ausnahme"); }).werfen("Einige Ausnahme"); }); });
Jasmine verfügt über eine Reihe anderer Funktionen wie benutzerdefinierte Matcher, Spione und Unterstützung für asynchrone Spezifikationen.
Jasmin -Testläufer
Jasmine wird mit einem eingebauten Testläufer geliefert. Jasmin -Tests können Browser -Tests durchführen, indem ein einfacher Specrunner.html aufgenommen wird[9] Datei oder durch Verwenden als Befehlszeilen -Testläufer, der für verschiedene Sprachen unterstützt wird Nodejs, Python, Rubyoder (alter Weg) durch Verwendung von Karma,[10] Ein einfaches Tool für JavaScript -Testläufer.
Vergleich zwischen Jasmine und Mokka[11]
Mokka ist ein weiteres beliebtes JavaScript -Test -Framework. Der Vergleich zwischen Jasmine und Mokka ist in der folgenden Tabelle angegeben.
Jasmin | Mokka |
---|---|
Jasmine wird mit Testdoppel unter Verwendung von Spione geliefert. | Mokka wird nicht mit einer Test -Doppelbibliothek ausgesetzt und verwendet im Allgemeinen eine externe Bibliothek wie Sinon. |
Jasmine hat a Befehlszeile Dienstprogramm Tests ausführen. | Mokka verfügt über ein Befehlszeilen -Dienstprogramm zum Ausführen von Tests. |
Jasmine hat in sie integriert. | Mokka hat keine AsSerions -Bibliothek und verwendet Chai für Behauptungen. |
Vorteile
- Das Ziel von Jasmine ist es, Browser, Framework, Plattform und Sprachunabhängige zu sein.[12]
- Neben einer verhaltensgetriebenen Entwicklung unterstützt Jasmine auch Testgetriebene Entwicklung.[12]
Siehe auch
- Liste der JavaScript -Bibliotheken
- Liste der Einheiten -Test -Frameworks
- Mokka (JavaScript Framework)
- Qunit
- JavaScript -Framework
- JavaScript -Bibliothek
Verweise
- ^ Frank, Davis W. "Jasmine 1.0 veröffentlicht". Entscheidende Labors. Archiviert von das Original am 22. Februar 2014. Abgerufen 11. Februar 2014.
- ^ "Releases · Jasmine/Jasmine". github.com. Abgerufen 2022-04-05.
- ^ "Jasmine/Mit.Lizense". GitHub. Abgerufen 25. April 2017.
- ^ https://jasmine.github.io/
- ^ "Hintergrund · Jasmine/Jasmine Wiki". GitHub.
- ^ Github Jsunit -Projektseite
- ^ a b c d e Ragonha, Paulo (2013). Jasmine JavaScript -Tests. Packt Publishing. ISBN 978-1782167211.
- ^ Hahn, Evan (2013). JavaScript -Tests mit Jasmine. O'Reilly Media. ISBN 978-1449356378.
- ^ "Ein einfaches Projekt". GitHub.
- ^ "Karma Jasmine".
- ^ "Jasmine vs. Mocha". Marco Franssen. Abgerufen 13. Februar 2017.
- ^ a b "Vergleich: Jasmine gegen Mocha gegen Qunit | Stackshare". Abgerufen 13. Februar 2017.