© Liashko/Shutterstock.com
Entwickler Magazin
Das All-in-one-JavaScript-Testwerkzeug Buster.JS

JS Leatherman

In diesem Artikel wird ein genauer Blick auf das neue Framework Buster.JS geworfen, das alle Vorzüge bisheriger JS-Frameworks vereint. Es unterstützt das Testen mittels statischer HTML-Seiten wie QUnit, von asynchronem Code wie Mocha bis zu serverseitigem Code wie Nodeunit. Zudem kann Buster.JS wie JsTestDriver automatisiert gleichzeitig in verschiedenen Browsern testen. Das vereinfacht und beschleunigt das Ausführen der Tests deutlich. In Ausgabe 5.13 des PHP Magazins wurden verschiedene Frameworks für das Testen in JavaScript vorgestellt. Den Artikel finden Sie als Bonus in der aktuellen iPad-App-Ausgabe.

Daniel Wittner


Der maßgebliche Initiator von Buster.JS [1, 2] ist kein Unbekannter in der JavaScript-Szene. Christian Johansen [3] verfasste bereits das Buch „Test-Driven JavaScript Development“ [4]. Der Norweger kreierte zudem das beliebte Stubbing- und Mocking-Framework Sinon.JS [5] und das vielseitige JavaScript-Werkzeug Juicer [6]. Buster.JS existiert derzeit zwar erst in der Betaversion, doch noch in diesem Jahr ist das Release für die stabile Version 1.0 geplant [7].

Erste Schritte mit Buster.JS

Wie Unit Tests für Buster.JS aussehen und wie sie im Browser und in Node.js ausgeführt werden, wollen wir uns anhand eines einfachen Beispiels anschauen. Dazu erstellen wir ein Modul room, das Teil einer Alarmanlage sein soll. Das Modul ermöglicht das Erzeugen von Objekten, die die zu überwachenden Räume repräsentieren. Ein Raum verwaltet eine Liste von Sensoren und kann diese asynchron auslesen.

Zunächst einmal muss Buster.JS installiert und konfiguriert werden. Buster.JS ist ein Node.js-Modul, weswegen es sich einfach über den Node Packet Manager mittels npm install -g buster installieren lässt. Diese Installation funktioniert inzwischen auch unter Windows, auch wenn die Verwendung von Buster.JS dort manchmal noch ein wenig hakt. Eine vollständige Unterstützung für Windows ist erst für die Version 1.0 geplant.

Nach der Installation muss Buster.JS mitgeteilt werden, wo sich die Quell- und Testdateien befinden und in welcher Umgebung die Tests ausgeführt werden sollen: im Browser oder in Node.js? Die Konfiguration erfolgt in Form eines CommonJS-Moduls, also in JavaScript. Bei Buster.JS unterscheidet man zwischen einer Konfigurationsdatei und den eigentlichen Konfigurationen, Konfigurationsgruppen genannt. Eine Konfigurationsdatei kann dabei mehrere Konfigurationen enthalten. Das Modul exportiert deshalb ein Array von Konfigurationsobjekten. Wie sich später noch zeigen wird, können sie sich gegenseitig sogar erweitern.

Automatisiert im Browser testen

Die Konfiguration für das Testen im Browser ist in Listing 1 dargestellt. Alle Pfade in der Datei sind relativ und werden standardmäßig ausgehend vom Verzeichnis der Konfigurationsdatei aufgelöst. Es ist aber auch möglich, ein Verzeichnis anzugeben, von dem aus die Pfade aufgelöst werden sollen.

Listing 1var config = module.exports; config["browser tests"] = { environment: "browser", libs: [ "lib/**/*.js" ], sources: [ "src/as.js" "src/**/*.js" ], tests: [ "test/**/*-test.js" ]};

Wir benennen die Konfigurationsdate...

Entwickler Magazin
Das All-in-one-JavaScript-Testwerkzeug Buster.JS

JS Leatherman

In diesem Artikel wird ein genauer Blick auf das neue Framework Buster.JS geworfen, das alle Vorzüge bisheriger JS-Frameworks vereint. Es unterstützt das Testen mittels statischer HTML-Seiten wie QUnit, von asynchronem Code wie Mocha bis zu serverseitigem Code wie Nodeunit. Zudem kann Buster.JS wie JsTestDriver automatisiert gleichzeitig in verschiedenen Browsern testen. Das vereinfacht und beschleunigt das Ausführen der Tests deutlich. In Ausgabe 5.13 des PHP Magazins wurden verschiedene Frameworks für das Testen in JavaScript vorgestellt. Den Artikel finden Sie als Bonus in der aktuellen iPad-App-Ausgabe.

Daniel Wittner


Der maßgebliche Initiator von Buster.JS [1, 2] ist kein Unbekannter in der JavaScript-Szene. Christian Johansen [3] verfasste bereits das Buch „Test-Driven JavaScript Development“ [4]. Der Norweger kreierte zudem das beliebte Stubbing- und Mocking-Framework Sinon.JS [5] und das vielseitige JavaScript-Werkzeug Juicer [6]. Buster.JS existiert derzeit zwar erst in der Betaversion, doch noch in diesem Jahr ist das Release für die stabile Version 1.0 geplant [7].

Erste Schritte mit Buster.JS

Wie Unit Tests für Buster.JS aussehen und wie sie im Browser und in Node.js ausgeführt werden, wollen wir uns anhand eines einfachen Beispiels anschauen. Dazu erstellen wir ein Modul room, das Teil einer Alarmanlage sein soll. Das Modul ermöglicht das Erzeugen von Objekten, die die zu überwachenden Räume repräsentieren. Ein Raum verwaltet eine Liste von Sensoren und kann diese asynchron auslesen.

Zunächst einmal muss Buster.JS installiert und konfiguriert werden. Buster.JS ist ein Node.js-Modul, weswegen es sich einfach über den Node Packet Manager mittels npm install -g buster installieren lässt. Diese Installation funktioniert inzwischen auch unter Windows, auch wenn die Verwendung von Buster.JS dort manchmal noch ein wenig hakt. Eine vollständige Unterstützung für Windows ist erst für die Version 1.0 geplant.

Nach der Installation muss Buster.JS mitgeteilt werden, wo sich die Quell- und Testdateien befinden und in welcher Umgebung die Tests ausgeführt werden sollen: im Browser oder in Node.js? Die Konfiguration erfolgt in Form eines CommonJS-Moduls, also in JavaScript. Bei Buster.JS unterscheidet man zwischen einer Konfigurationsdatei und den eigentlichen Konfigurationen, Konfigurationsgruppen genannt. Eine Konfigurationsdatei kann dabei mehrere Konfigurationen enthalten. Das Modul exportiert deshalb ein Array von Konfigurationsobjekten. Wie sich später noch zeigen wird, können sie sich gegenseitig sogar erweitern.

Automatisiert im Browser testen

Die Konfiguration für das Testen im Browser ist in Listing 1 dargestellt. Alle Pfade in der Datei sind relativ und werden standardmäßig ausgehend vom Verzeichnis der Konfigurationsdatei aufgelöst. Es ist aber auch möglich, ein Verzeichnis anzugeben, von dem aus die Pfade aufgelöst werden sollen.

Listing 1var config = module.exports; config["browser tests"] = { environment: "browser", libs: [ "lib/**/*.js" ], sources: [ "src/as.js" "src/**/*.js" ], tests: [ "test/**/*-test.js" ]};

Wir benennen die Konfigurationsdate...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang