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.
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.
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 |
---|---|
![]() |
![]() |
![]() |
![]() |
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.
Standort Hannover
newcubator GmbH
Bödekerstraße 22
30161 Hannover
Standort Dortmund
newcubator GmbH
Westenhellweg 85-89
44137 Dortmund