Take it easy JavaScript

TieJS-Tutorial: Einfache Unit-Tests mit dem Jasmine-Plug-in schreiben
Keine Kommentare

tieJS ist der Code-Editor für Einsteiger, die JavaScript lernen wollen. Neben den auf das Wesentliche reduzierten Basisfeatures kann man auch fortgeschrittenere Plug-ins hinzufügen. Dazu gehört zum Beispiel Jasmine. Wie erstellt man den ersten eigenen Unit-Test?

Die frei verfügbare Software tieJS ist eine Entwicklungsumgebung für die Programmierung mit JavaScript. Die Grundversion enthält nur die wichtigsten Funktionen, damit die Bedienung einfach bleibt. Durch Plug-ins kann die Funktionalität des Editors erweitert werden.

Die Plug-ins können unter https://ilernen.eu/tieJS/#idpluginlist als Zip-Datei heruntergeladen werden. Das hier betrachtete Jasmine-Plug-in wird dazu verwendet einfache Unit-Tests für den eigenen Quelltext zu erstellen und durchzuführen.

Durch das Plug-in wird das Modul Jasmine (siehe https://jasmine.github.io/index.html) in tieJS integriert und per Knopfdruck nutzbar gemacht.

Die heruntergeladene Zip-Datei plugin_jasmine.zip enthält zwei Ordner, die direkt in den Ordner tieJS\bin\plugins des tieJS-Installationsverzeichnisses kopiert werden:

Wichtig: Der übergeordnete Ordner plugin_jasmine darf nicht mitkopieren werden!

Jasmine steht nach Programmstart im Tools-Tab zur Verfügung:

Mit Unit-Tests kann überprüft werden, ob das eigene Programm zur Lösung eines bestimmten Problems korrekte Ergebnisse liefert.

Unit-Tests können für .js-Dateien erstellt werden. Als Beispiel wird die Funktion factorial() zur Berechnung der Fakultät n! einer Zahl n in der Datei math.js betrachtet:

Das Ergebnis der Berechnung wird am Ende der Funktion zurückgegeben. Um die Korrektheit des Ergebnisses zu überprüfen, formuliert man Bedingungen, die bei der Berechnung immer erfüllt sein müssen.

Aus mathematischen Gründen gelten für die Fakultätsberechnung folgende Bedingungen:

  • 0!=1
  • 1!=1
  • 2!=2
  • 3!=6
  • 20!=2432902008176640000
  • 7!=7*6!

Die Bedingungsliste kann bei Bedarf beliebig erweitert werden. Liefert die Funktion factorial() die gleichen Ergebnisse, geht man davon aus, dass diese korrekt programmiert ist. Der Unit-Test ist in diesem Fall erfolgreich.

Um diese Bedingungen mit Jasmine zu formulieren erzeugt man mit dem Button „Edit“ eine Jasmine-Testdatei. Die Testdatei wird von tieJS im gleichen Ordner wie math.js mit dem Dateinamen math_Spec.js erzeugt. Das Grundgerüst für einen Jasmine-Test ist bereits enthalten und kann nun für den eigenen Test angepasst werden:

Neben der Beschreibung der Tests werden die Bedingungen in der Jasmine-Syntax formuliert:

expect(factorial(0)).toBe(1);

Das bedeutet, dass das Ergebnis nach Aufruf der Funktion factorial(0) mit dem Parameter 0 als Ergebnis 1 liefern soll. Das entspricht gerade der Bedingung 0!=1.
Formuliert man alle Bedingungen, sieht die math_Spec.js folgendermaßen aus:

Die verwendeten Jasmine-Syntaxbausteine stehen in tieJS im Tools-Tab als Snippets zur Verfügung:

Nachdem man mit Save math_Spec.js gespeichert hat, kann der Test mit dem Menü-Icon „Start“ gestartet werden. Die Testergebnisse werden im Jasmine-Fenster angezeigt:

Alle Testergebnisse werden in grün angezeigt. Die Funktion factorial() hat also alle Tests bestanden. Wäre in der factorial-Funktion ein Fehler, könnte das Testergebnis so aussehen:

Nur 2 von 6 Tests waren erfolgreich. Bei einem der Tests (2!=2) berechnete die factorial-Funktion das Ergebnis 0. Der Test hat aber das Ergebnis 2 erwartet. Die factorial-Funktion ist also fehlerhaft und muss entsprechend korrigiert werden.

Weitere Informationen über Unit-Test mit Jasmine erhält man unter https://jasmine.github.io/index.html.

Im nächsten Teil dieser Artikelreihe schauen wir uns an, wie man mithilfe des NodeJS-Plugins serverseitigen JavaScript-Code erstellen, wie man NPM-Module nutzen und mit Browserify browsertauglich abspeichern kann.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -