Das gängige Framework, um Unit-Tests mit JavaScript zu schreiben, war JsUnit von Edward Hieatt. Dieses ist nicht zu verwechseln mit einem weiteren Test-Framework, das jsUnit (mit einem kleinen j) heißt, aber von Jörg Schaible entwickelt wurde. In diesem Artikel ist das Test-Framework mit dem großen J gemeint.
JsUnit ist inzwischen fast zehn Jahre alt. Sein größter Nachteil ist, dass es nur im Web-Browser läuft. Unit-Tests finden bei JsUnit in einem Testkontext statt, das mit einer HTML-Seite die Voraussetzungen für die Durchführung von Unit-Tests herstellt. Da JavaScript-Module inzwischen auch in Kontexten außerhalb des Browsers (z.B. mit Node.js oder auf dem Smartphone für Apps) eingesetzt werden, wurde die Arbeit an JsUnit eingestellt und sein Nachfolger, das Framework Jasmine, eingeführt.
Jasmine hat keine Abhängigkeiten zum Webbrowser als Ablaufumgebung. Daher kann es nicht nur im Browser (z.B. in einer statischen Webseite als Testumgebung), sondern auch außerhalb, z.B. auf einem Continuous Integration-Server oder einer serverseitigen Laufzeitumgebung wie Node.js verwendet werden. Im folgenden Beispiel möchte ich aber der Einfachheit halber den Browser als Laufzeitumgebung verwenden.
Bei Jasmine handelt es sich um ein BDD-Framework. Es bietet also nicht nur klassische Unit-Tests, sondern folgt den Paradigmen von „Specification by Example„.
weiterlesen