19.10.2022

Angular Unit Test - You're Testing Your Angular Code Wrong (Probably)

Spoiler-Alert: You're Testing Your Angular Code Wrong (Probably) -> Real World Exmaple

Beim verwenden der Angular CLI wird uns Entwickler(innen) standardmäßig beim generieren einer Komponente, Service, Pipe etc. eine Test-Datei (*.spec.ts) mitgeneriert.

Per Default wir auch immer das TestBed für uns aufgesetzt. Durch das TestBed können wir sämtliche Abhängigkeiten etc., die für unsere Komponente benötigt werden, importieren/bereitstellen. Ist dieses aber wirklich immer erforderlich, gerade wenn wir uns im Unit-Test-Bereich bewegen? Nein, ganz im Gegenteil! Eine Komponente ist - streng genommen - nichts anderes als eine Klasse, welche wir selbst (ohne Hilfe vom TestBed) initialisieren können.

grafik


Was genau hat man jetzt aber davon bzw. wann genau sollte ich das TestBed zur Hilfe nehmen? Diese Frage ist schnell beantwortet. Das TestBed wird dann benötigt, wenn wir unter anderem das Template testen wollen. Sprich, wenn wir ein Integration Test schreiben.

grafik

Benefit

Sollte ggf. die Überlegung getätigt werden, bei Unit Test das TestBed zu entfernen? Hier ein klares ja, den dieses wirkt sich positiv auf die Ausführungszeit unserer Test aus.

Mit TestBed Ohne TestBed
grafik grafik
grafik grafik

Module

Manchmal ist es notwendig bestimmte Module für eine Komponente etc. bereitzustellen, dieses lässt sich sehr gut mit der Library ng-mocks umsetzen. Durch den keep(Module) Aufruf, bleibt bzw. wird das Module für die Komponente bereitgestellt, ähnlich wie vom TestBed. Genauso könnte man aber auch durch den Aufruf von mock(Module) ein Module mocken.

grafik

Dennis

Softwareentwickler

Gitlab
Zur Übersicht

Standort Hannover

newcubator GmbH
Bödekerstraße 22
30161 Hannover

Standort Dortmund

newcubator GmbH
Westenhellweg 85-89
44137 Dortmund