Jasmine ist ein Testframework und zählt zu den beliebtesten Testautomatisierungstools. Mit Jasmine können Tests für Javascript-basierte Webanwendungen geschrieben werden. Es ist unabhängig vom verwendeten Frontend-Framework und lässt sich dank einer einfachen Syntax schnell erlernen. Da es den Behavior Driven Development-Ansatz verfolgt, werden die Tests geschrieben, bevor die eigentliche Programmierung erfolgt.
In diesem Beitrag möchte ich dir Jasmine genauer vorstellen.
Geschichte
Jasmine wurde ursprünglich von einer IT-Consulting-Firma namens Pivotal Lab aus San Franciscoentwickelt. 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.
Merke: Jasmine testet JavaScript unkompliziert, BDD-orientiert und mit Spies, Mocks und Matchern – ideal für Unit- und Integrationstests..
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.
Ablauf eines automatisierten Tests mit Jasmine
Abbildung: Ablauf eines Jasmine-Tests von der Test-Suite bis zum Testabschluss
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.
Was ist Jasmine und wofür wird es eingesetzt?
Jasmine ist ein JavaScript-Testframework für Unit- und Integrationstests. In der Praxis nutze ich Jasmine vor allem, um Funktionen und Module in Webprojekten isoliert zu prüfen und sicherzustellen, dass Änderungen keine Fehler verursachen.
Ist Jasmine ein vollständiges Testtool?
Jasmine ist ein eigenständiges Testframework, das alles Notwendige für Unit-Tests mitbringt: Assertions, Testorganisation und Mocking. Anders als bei Mocha muss man keine zusätzlichen Bibliotheken installieren, um Tests auszuführen.
Welche Programmiersprachen unterstützt Jasmine?
Jasmine wird ausschließlich mit JavaScript eingesetzt. In Projekten arbeite ich in der Regel mit JavaScript oder TypeScript, um Tests direkt im bestehenden Frontend- oder Node.js-Code zu integrieren.
Was ist der Unterschied zwischen Jasmine und Mocha?
Jasmine ist ein All-in-One-Testframework, das Assertions und Mocking bereits integriert hat. Mocha hingegen ist flexibler, benötigt aber zusätzliche Bibliotheken wie Chai für Assertions.
Ist Jasmine noch zeitgemäß?
Ja, Jasmine wird weiterhin eingesetzt, vor allem in Projekten, die auf klassische Unit-Tests setzen. In der Erfahrung ist es besonders hilfreich, wenn ein Projekt ohne zusätzliche Bibliotheken auskommen soll.
Für welche Arten von Tests eignet sich Jasmine?
Jasmine eignet sich besonders für Unit- und Integrationstests von JavaScript-Anwendungen. Für End-to-End-Tests verwende ich Frameworks wie WebdriverIO oder Cypress.
Hallo! Auf diesem Blog teile ich mein Wissen und meine Erfahrungen rund um moderne Softwaretests, Testautomatisierung und Qualitätssicherung. Mein Ziel ist es, Testprozesse praxisnah, effizient und verständlich zu vermitteln – damit Software zuverlässiger und benutzerfreundlicher wird.