iX 2/2019
S. 42
Titel
JavaScript
Aufmacherbild

Werkzeuge für das Testen von JavaScript-Code

Lieblingsfarbe Grün

Frameworks wie Mocha oder Jasmine helfen beim automatisierten Testen von JavaScript-Anwendungen. Bei ausgewiesenen UI-Tests in unterschiedlichen Browsern helfen zusätzliche Module wie puppeteer und Selenium.

Das Testen von Code ist enorm wichtig, denn es stellt nicht nur sicher, dass Code initial wie gewünscht funktioniert, sondern liefert zugleich ein Sicherheitsnetz für die Zukunft: Verfügt Code über Tests, können Änderungen und Erweiterungen das Verhalten nicht unbemerkt beeinflussen. Sind die Tests zudem automatisiert, ist garantiert, dass sie stets auf die gleiche Art und außerdem zügig ausgeführt werden. Das spart Zeit und liefert deterministische Ergebnisse.

Wer unter JavaScript testen will, braucht zunächst ein geeignetes Test-Framework, das die eigenen Bedürfnisse abdeckt. Inzwischen stehen zahlreiche Systeme zur Auswahl, wobei praktisch alle als Open Source angeboten und über die Paketverwaltung npm installiert werden.

Mocha, Jasmine, Ava & Co.

Zu den Klassikern gehören Mocha und Jasmine, in den vergangenen Jahren sind aber auch zahlreiche Alternativen erschienen, beispielsweise Ava und Jest (zu Quellen im Web siehe ix.de/ix1902042, zu Jest auch den Artikel auf S. 48). Diese bieten durchaus spannende Ansätze, unter anderem im Bereich der parallelen Ausführung von Tests, haben aber die beiden Platzhirsche (noch) nicht ablösen können. Wer also auf Mocha oder Jasmine setzt, hält nach wie vor ein gutes Werkzeug in den Händen.

Welches von beiden man verwendet, ist letztlich Geschmackssache: Mocha wurde ursprünglich für Node.js entwickelt, Jasmine hingegen für den Einsatz im Webbrowser. Inzwischen haben sich beide einander so angenähert, dass es praktisch egal ist, für welches man sich entscheidet. Insbesondere kann man Mocha inzwischen auch im Webbrowser einsetzen und Jasmine unter Node.js. Exemplarisch verwendet der Artikel für die folgenden Beispiele Mocha, die grundlegenden Überlegungen gelten aber gleichermaßen für andere Frameworks.

Mocha und seine Grundkonzepte

Ursprünglich hat TJ Holowaychuk Mocha entwickelt, ein Kanadier, der viele für Node.js relevante Module erdacht hat, unter anderem das Web-Framework Express. Mocha ist ein Basis-Framework zum Testen und bietet diverse Grundkonzepte, beispielsweise Suiten zum Organisieren von Tests sowie Setup- und Teardown-Funktionen zum Vor- und Nachbereiten von Tests.

Um einen einfachen Test zu schreiben, gilt es zunächst, ein test-Verzeichnis innerhalb des Projekts anzulegen. Theoretisch lässt sich der Name dieses Verzeichnisses auch anpassen, in der Regel belässt man es aber bei der von Mocha vorgegebenen Bezeichnung. Für die Dateien, die die eigentlichen Tests enthalten, gibt Mocha keinerlei Konvention vor. Es hat sich allerdings eingebürgert, diesen Dateien das Suffix Tests.js zu geben, um sie von den zu testenden Dateien unterscheiden zu können.