Unit Tests mit Karma und Jasmine bei StackBlitz
Ich liebe StackBlitz
💡 Keine Lust zu lesen?
Nicht jeder lernt am besten aus Büchern und Artikeln. Lernen darf interaktiv sein und Spaß machen. Wir bieten dir auch Angular Intensiv-Schulungen an, damit du tiefer in die Thematik einsteigen kannst.
Mehr Informationen zur Angular-Schulung
Stackblitz ist das perfekte Tool um schnell mal einen Prototypen zu bauen oder um funktionierende Code Beispiele mit anderen zu teilen. Aber da geht noch mehr: In StackBlitz kannst du ein GitHub Repo ohne großen Aufwand importieren.
Und Unit Tests laufen auch.
Heute möchte ich euch zeigen, wie man in Stackblitz Unit Tests mit Karma und Jasmine zum laufen bekommt.
Aber erstmal einige grundlegende Funktionen.
Was ist StackBlitz?

StackBlitz ist ein Online Live Editor basierend auf Visual Studio Code. Hier funktionieren die selben Keyboard Shortcuts, die man von seiner lokalen Installation kennt (und liebt).
Meine Lieblings Keyboard Shortcuts (Windows)
| Keys | Function |
|---|---|
alt+key-up | Die Zeile in der der Cursor ist nach oben verschieben |
alt+key-down | Die Zeile in der der Cursor ist nach unten verschieben |
alt+shift+key-up | Eine Kopie der Zeile in der der Cursor ist in der Zeile darüber einfügen |
alt+shift+key-down | Eine Kopie der Zeile in der der Cursor ist in der Zeile darunter einfügen |
ctrl+d | Setzt einen Multi Cursor auf das ausgewählte Wort und dem nächsten vorkommenden |
ctrl+# | Die Zeile in der der Cursor ist Ein-/Auskommentieren |
StackBlitz und GitHub
Oft findet man sich in der Situaton, dass man anderen ein Github Projekt zeigen oder schnell mal eben etwas testen möchte.
Mit StackBlitz ist das ein no-brainer.
Ruf dazu einfach folgende URL auf, natürlich nicht mit den Platzhaltern ;)
https://stackblitz.com/github/userName/repoName
Das öffnet den Master Branch in Stackblitz.
Willst du dagegen einen bestimmten Branch starten, muss eure URL wie folgt aussehen:
https://stackblitz.com/github/userName/repoName/tree/branch
Stackblitz kann dein JavaScript Projekt starten, egal welches Framework du verwendest, es muss nur eine package.json vorhanden sein.
Karma und Jasmine konfigurieren
Um deine unit Tests in StackBlitz zum laufen zu bringen, musst du die main.ts anpassen.
// Import Jasmine from node_modules
import jasmineRequire from 'jasmine-core/lib/jasmine-core/jasmine.js';
import 'jasmine-core/lib/jasmine-core/jasmine-html.js';
import 'jasmine-core/lib/jasmine-core/boot.js';
import './polyfills';
import 'zone.js/dist/zone-testing';
import { getTestBed } from '@angular/core/testing';
import {
BrowserDynamicTestingModule,
platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';
// declare it in the window object
window['jasmineRequire'] = jasmineRequire;
// setup jasmine as a global var
declare var jasmine;
// Spec files to include in the StackBlitz tests
import './tests.sb.ts';
//
bootstrap();
//
function bootstrap() {
if (window['jasmineRef']) {
location.reload();
return;
} else {
window.onload(undefined);
window['jasmineRef'] = jasmine.getEnv();
}
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting()
);
}
StackBlitz fragt dann ob es das fehlende Paket Jasmine-core samt peerdependency installieren soll.
Danach sehen wir erstmal recht wenig oder es sieht nicht so aus wie wir es von Jasmine gewohnt sind.
Wir müssen noch das jasmine styling in der styles.scss einbinden
@import '~jasmine-core/lib/jasmine-core/jasmine.css';
Wenn du nicht nur blind copy ‘n paste gemacht hast, ist dir evtl. schon eine Zeile in der main.ts aufgefallen
// Spec files to include in the StackBlitz tests
import './tests.sb.ts';
Über diese Datei (wir müssen sie noch anlegen), werden alle (*.spec.ts) importiert.
Hier ein kurzes Beispiel:
import './app/app.component.spec.ts';
import './app/my-nav/my-nav.component.spec.ts';
Das war es auch schon.
💡 Hat dir das Tutorial geholfen?
Wir bieten auch Angular-Intensiv-Schulungen an, um dich möglichst effektiv in das Thema Angular zu begleiten. Im Kurs kannst Du die Fragen stellen, die Du nur schlecht googeln kannst, z.B. "Besserer Weg, um meine Applikation zu strukturieren?". Wir können sie Dir beantworten.
Jetzt weiter lernen
Ja, es IST so einfach!

Danke
- Jeremy Wilken für die Inspiration.
Danke. #communityrocks!
David Müllerchen
Google Developer Expert
Webentwickler und ein neugieriges Spielkind
David Müllerchen ist leidenschaftlicher Webentwickler und ein neugieriges Spielkind. Er entwickelt seit mehr als einem Jahrzehnt Webanwendungen, (u.a. für Olympus, Telefonica, Hermes) und vermittelt seit 2014 sein Wissen über Javascript und Angular in Schulungen. Nebenbei engagiert er sich in der Angular Community, hält regelmäßig Talks auf internationalen Konferenzen und organisiert das Angular Meetup in Hamburg.
Weitere Artikel
Unit Tests mit Karma und Jasmine bei StackBlitz
StackBlitz ist ein vielseitiges Tool. Erfahre wie es im Alltag hilft und welche Möglichkeiten es für Unit Tests mit Karma und Jasmine gibt.
Tests in Angular - 9 Beispiele zeigen dir, wie es geht
Wie teste ich meine Angular Anwendung? Wir zeigen dir in 9 leicht zu befolgenden Beispielen wie ihr Services, Komponenten und alle weiteren Konzepte testet.
Angular E2E Tests mit Protractor und Sauce Labs
Einführung in E2E Tests mit Protractor und Sauce Labs - Die universelle Fernbedienung für Browser. Hier findest du eine Schritt für Schritt Anleitung.