Unit testen van private methods in Angular

Unit testen van private methods in Angular

Het liefst test je alles binnen jouw Angular project, alleen dan weet je dat je code goed werkt na elke verandering. Binnen een component test je naast private en public attributen ook private en public methods. Public methods kun je gemakkelijk testen door in de unit test deze methods direct aan te roepen. Met verschillende parameters test je elk pad binnen deze method en weet je dat de code werkt en blijft werken.

Bij private methods is dit niet zo gemakkelijk, maar je wilt wel hetzelfde bereiken. Je hebt de methode waarschijnlijk met een reden private gemaakt, het simpelweg public maken van een method voor een unit test is `not-done` en dat wil je dus niet. Maar wat kun je wel doen?

Testen via public methods

Private methods kun je testen via public methods. Jouw private method zal waarschijnlijk door events of andere methods worden aangeroepen. Je kunt een test schrijven die zo'n event triggert of die een public method uitvoert en daarmee ook de private method uitvoert.

Verplaats logica van een method naar een service

Als jouw private method veel logica bevat (bijvoorbeeld twee if-statements of meer) kan het lastig zijn om via public methods of events alle paden van een private method te testen. Door het verplaatsen van de logica naar een service maak je jouw code beter testbaar. In plaats van dat je de directive test schrijf je een unit test voor de service die je hebt geschreven. Doordat de service public methods implementeert is de code beter toegankelijk en kun je alle testpaden beter bereiken met jouw test.

Wat als dit niet werkt

Als je niet je private methods kan testen via een public method of event, of als jouw logica niet verplaatst kan worden naar een service heb je waarschijnlijk te maken met een ander probleem:

  • De private method is code die nooit wordt gebruikt bij het uitvoeren van jouw applicatie
  • Je hebt een `design-smell`. Dit betekent dat jouw indeling van code niet ideaal is. Meestal is dit doordat jouw class te complex is opgezet/
  • Je hebt een onnodig private gemaakt.

Lees ook

The bullshit of implementing web accessibility

What is WCAG? Before I dive into the details of web accessibility, let me explain in my own words what it actually is. WCAG stands for Web Content Accessibility Guidelines. It’s a set of guidelines designed to ensure that websites and web applications are accessible to everyone, including people with disabilities…

Continue reading

The bullshit of frontend development

Introduction In this blog, I would like to share my opinion on how we, as front-end developers, often make projects unnecessarily complex. We often think we’re doing the right thing, but are we? Where we used to say we could build a website in just a few days, now we provide timelines at the infamous Scrum…

Continue reading

How I added my Porsche EV to Homekit

Since my childhood, I have been passionate about cars and everything related to them. Even at a young age, I knew every model. I spent hours flipping through car magazines searching for new facts and always dreamed of owning an exotic car. Initially, I used to dream of owning a Ferrari, but as I grew older and wiser,…

Continue reading