Unit testen met Jest
Unit testen van Express-applicaties met Jest biedt een manier om de betrouwbaarheid van je applicatie te garanderen. Bij het schrijven van unit tests voor Express-applicaties in TypeScript, is het belangrijk om je te focussen op het isoleren van individuele functies of componenten van de applicatie, waarbij het gebruik van mocks tot een minimum wordt beperkt. Hieronder vind je een basisvoorbeeld van hoe je kunt beginnen met het testen van een Express-route in TypeScript met Jest.
Installeer eerst Jest en Supertest (om HTTP requests te doen): npm i --save-dev jest typescript ts-jest supertest @types/jest @types/supertest
Dit zijn development dependencies, want de applicatie die aan de gebruiker wordt aangeboden heeft ze niet nodig. Ze zijn alleen nodig voor de ontwikkelaar.
Om Jest te kunnen gebruiken (met TypeScript), voer je dit commando uit: npx ts-jest config:init
Om te zorgen dat je al je Jest-tests kan laten lopen met npm test
, voeg je dit toe aan package.json:
Veronderstel nu dat je deze app met één route hebt:
Dan kan je een Jest-test schrijven als volgt. Je hoeft hier de applicatie niet voor op te starten: supertest interageert rechtstreeks met de app en gaat niet via de poort waarop we normaal listen
uitvoeren.
Belangrijke onderdelen zijn hier:
de filenaam: Jest herkent, met de configuratie die we hebben, files die eindigen op
.test.ts
describe
: dit is een manier om testfuncties te groeperengroepen kunnen genest zijn, dus je kan een
describe
in een describe plaatsende code in alle niveaus van
describe
voert uit voor de testen zelf lopen
it
: deze functie (ooktest
genaamd) verwacht een omschrijving van wat er moet gebeuren en callback die de testcode zelf bevat. Zoals je ziet in het voorbeeld, mag deze callback asynchroon zijn.request(app): dit is hoe
supertest
een HTTP-request creëert voor je appexpect
: dit levert een "expectation", een object waarmee je bepaalde verwachtingen expliciet kan makentoBe
: dit is een voorbeeld van een matcher, een manier om zo'n verwachting uit te drukken. Er zijn ook matchers om na te gaan of een resultaat bepaalde tekst bevat, een bepaalde lengte heeft,... Je kan best de autocomplete van je editor gebruiken of de documentatie van Jest raadplegen. Daar vind je nog meer matchers.
Cookies in je request plaatsen
Als je code verwacht dat een bepaalde cookie aanwezig is, kan je deze toevoegen aan je individuele requests door middel van set:
Als je wil controleren wat er met cookies gebeurt over een volledige request-response cyclus, plaats je deze beter in de "cookie jar" van de "agent". Deze "agent" kan je zien als de browser:
Last updated