Geschichte
Jasmine wurde ursprünglich von einer IT-Consulting-Firma namens Pivotal Lab aus San Francisco entwickelt. Zuvor arbeitet das Unternehmen bereits an einem Tool namens JsUnit für Unit-Tests.
Jasmine selbst kam erstmals 2010 heraus und wurde als Testautomatisierungsframework für Javascript-Programmierer vorgestellt.
Jasmine fand schnell eine große Anhängerschaft. Es wurde stetig weiterentwickelt und wird heute von vielen tausenden Entwicklern auf der ganzen Welt genutzt. Insbesondere für Unit-Tests hat es sich einen echten Namen gemacht und kommt bei vielen großen Firmen zum Einsatz. Besonders oft wird Jasmine im Zusammenspiel mit modernen Frontend-Frameworks wie Angular eingesetzt.
Darum ist Jasmine so beliebt
Jasmine wird nicht ohne Grund von vielen tausenden Entwicklern genutzt. Es bietet eine ganze Reihe von Vorteilen, dazu zählen:
- Leicht verständlich: Die Syntax von Jasmine ist unkompliziert, auch mit wenig Erfahrung lassen sich Tests programmieren.
- Framework/DOM unabhängig: Jasmine folgt dem Behavior-Driven-Development (BDD)-Ansatz und wird vor allem für Komponenten-Tests eingesetzt. Es funktioniert auch ohne DOM und benötigt kein spezielles Framework.
- Mocking-Möglichkeiten: Mit „Spies“ und „Mocks“ können Funktionen „gemockt“ werden und Abhängigkeiten, z.B. bei APIs und Drittanbieter-Services, simuliert werden.
- Automatisierung und CI/CD-Pipelines: Die geschriebenen Tests können in CI/CD-Pipelines eingebunden werden, so laufen Tests bei Änderungen am Code automatisch. Dies hilft, Fehler schnell zu erkennen und macht manuelles Testen nach Entwicklungsphasen hinfällig.
Für welche Testarten ist Jasmine geeignet?
Jasmine kann für unterschiedlichste Testarten genutzt werden, dazu zählen:
- Unit-Tests: Zum Testen von kleinen Einheiten, in der Regel sind dies einzelne Funktionen und Klassen. Mehr zum Unit-Test erfahren Sie hier.
- Integrationstest: Prüfung des Zusammenspiels einzelner Einheiten der Software.
- API-Tests: Testen von Programmierschnittstellen, üblicherweise Rest- und GraphQL-APIs.
- Asynchrone Tests: Prüfung von asynchronen Operationen im Code, wie Prüfung von Promises oder Callbacks.
- Mocking-Tests: Isoliertes Testen von Komponenten der Anwendung durch simulierte (gemockte) Funktionen.
Verwendung
Das gefragte Open-Source-Testframework kann auf verschiedene Weise genutzt werden. Einerseits lässt es sich direkt im Browser, üblicherweise in Kombination mit einem Test-Runner wie Karma, ausführen. So können Testresultate direkt in der Konsole überprüft werden. Andererseits kann Jasmine auch in einer Node.js-Umgebung laufen, dafür muss es einfach als Entwicklungs-Abhängigkeit innerhalb des Entwicklungsprojektes installiert werden.
Matcher
Jasmine stellt eine Vielzahl an sog. Matchern zur Verfügung, die eine flexible Prüfung von Bedingungen mithilfe von booleschen Werten möglich machen. Wenn die Bedingung erfüllt ist, liefert der Macher ein true, falls die Erwartung nicht eintrifft, wird ein false ausgegeben und der Test gilt als nicht bestanden. Beispielsweise prüft ein Matcher wie toBe, ob zwei Werte identisch sind, toBeTruthy hingegen testet, ob ein Wert einen bestimmten Zustand besitzt, genauer gesagt ein wahrer Wert ist. Weitere Beispiele sind:
- toBeDefined: Prüft, ob eine Variable oder ein Wert definiert wurde.
- toBeUndefined: Kontrolliert, ob ein Wert oder eine Variable undefined ist.
- toBeLessThan: Kontrolliert, ob eine Variable oder ein Wert kleiner als ein anderer ist.
- toContain: Testet, ob ein Wert in einem Array vorkommt.
Schlussworte
Hinter Jasmine steckt ein leistungsstarkes Open-Source-Projekt, das hauptsächlich für Unit-Tests in Javascript geeignet ist. Durch die gut verständliche Syntax und einfache Handhabung gehört es unter QA-Experten und Testern zu den beliebtesten Automatisierungslösungen. Mit Hilfe der integrierten Matcher und Spies macht es die alltägliche Arbeit eines Testers deutlich einfacher.
Entwickler benötigen für Jasmine keine komplizierte Testumgebung oder teure Testserver. Es kann einfach im Browser oder in einer Node.js-Umgebung ausgeführt werden. Dank einer breiten Palette an nützlichen Features bietet es ausreichend Unterstützung zum Organisieren einer großen Testanzahl.