3.8.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

Zur Übersicht

Mehr vom DevSquad...

Sophia Brandt

Next.js: Lazy Loading von dynamischen Inline-Imports

Adrian Görisch

postgres native upsert