Unit testing met Jest
Leer geïsoleerde unittests schrijven voor afzonderlijke functies en modules met het Jest-testframework.
Unit testing met Jest is een gratis Bootcamp backendontwikkeling met Node.js-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Bootcamp backendontwikkeling met Node.js. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Bootcamp backendontwikkeling met Node.js bevat in totaal 4 lessen.
Wat is unit testing?
Welkom bij unit testing! Dit is een fundamentele praktijk in softwareontwikkeling waarbij afzonderlijke onderdelen of functies van je applicatie geïsoleerd worden getest.
Zie het als het afzonderlijk controleren van elk tandwiel in een klok om te verzekeren dat het perfect werkt voordat je het hele mechanisme in elkaar zet. Zo ontdek je bugs vroegtijdig!
Maak kennis met Jest: je testmaatje
Voor Node.js is Jest een van de populairste en gebruiksvriendelijkste testframeworks. Het is ontwikkeld door Facebook en biedt een complete, geïntegreerde oplossing voor het testen van JavaScript.
- Geen configuratie: Werkt vaak direct zonder extra instellingen.
- Snel: Ontworpen voor goede prestaties.
- Uitgebreide API: Inclusief een krachtige bibliotheek voor controles (matchers).
- Snapshot testing: Ideaal voor UI-componenten.
Jest installeren
Beginnen met Jest is eenvoudig. Je installeert het als ontwikkelafhankelijkheid in je Node.js-project. Open je terminal in de hoofdmap van je project en voer het volgende uit:
npm install --save-dev jest
Na de installatie kun je een script toevoegen aan je package.json-bestand, zodat je je tests eenvoudig kunt uitvoeren:
"scripts": { "test": "jest" }
Onze eerste functie om te testen
Laten we een eenvoudige functie schrijven die we willen testen. Deze functie telt twee getallen op. We plaatsen deze in een bestand met de naam sum.js.
Je kunt dit bestand rechtstreeks uitvoeren om de functie in actie te zien, maar later gebruiken we Jest om deze automatisch te testen!
function sum(a, b) {
return a + b;
}
// This allows us to use 'sum' in other files
module.exports = sum;
// Optional: Run this part only if the file is executed directly
if (require.main === module) {
console.log("Running sum(2, 3):");
console.log("Result: ", sum(2, 3)); // Expected: 5
}Je testbestand structureren
Jest zoekt naar testbestanden met specifieke naamgevingsconventies, meestal .test.js of .spec.js. Laten we sum.test.js in dezelfde map maken.
Daarin gebruiken we describe() om gerelateerde tests te groeperen en test() (of it()) voor afzonderlijke testgevallen. Zo blijven je tests overzichtelijk en leesbaar.
Controles uitvoeren met matchers
In een blok met test() gebruiken we expect() in combinatie met een "matcher" om te controleren of een waarde aan bepaalde voorwaarden voldoet. .toBe() controleert bijvoorbeeld op exacte gelijkheid.
Zo zouden we onze functie sum testen:
const sum = require('./sum');
describe('sum function', () => {
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
test('adds 0 + 0 to equal 0', () => {
expect(sum(0, 0)).toBe(0);
});
test('adds negative numbers correctly', () => {
expect(sum(-1, -2)).toBe(-3);
});
});Je tests uitvoeren
Nu je de bestanden sum.js en sum.test.js hebt, en Jest is geïnstalleerd met het script ingesteld, kun je je tests uitvoeren!
Typ gewoon npm test in je terminal. Jest vindt je .test.js-bestanden, voert ze uit en rapporteert de resultaten. Als alle tests slagen, zie je groen!
Asynchrone tests afhandelen
Veel Node.js-applicaties werken met asynchrone bewerkingen, zoals gegevens ophalen en databaseaanroepen. Jest handelt deze uitstekend af!
Je kunt async/await rechtstreeks in je testfuncties gebruiken. Jest wacht totdat de promise is opgelost voordat de test wordt voltooid.
function fetchData() {
return new Promise(resolve => {
setTimeout(() => {
resolve("Data from API");
}, 50);
});
}
module.exports = fetchData;
// Optional: Run this part only if the file is executed directly
if (require.main === module) {
console.log("Simulating data fetch...");
fetchData().then(data => console.log("Received: ", data));
}Asynchrone tests schrijven
Om onze functie fetchData te testen, markeren we onze testfunctie als async. Jest biedt ook speciale matchers zoals .resolves en .rejects voor promises.
Door await in je test te gebruiken, ziet asynchrone code eruit als synchrone code, wat de leesbaarheid verbetert.
const fetchData = require('./fetchData');
describe('fetchData function', () => {
test('should return "Data from API"', async () => {
const data = await fetchData();
expect(data).toBe('Data from API');
});
test('should resolve with specific data', () => {
return expect(fetchData()).resolves.toBe('Data from API');
});
});Controle met Jest-matchers
Welke van de volgende Jest-matchers zou je gebruiken om te controleren of twee objecten dezelfde waarde hebben (een diepe vergelijking), en niet alleen of ze dezelfde instantie zijn?
Unit testing met Jest: samenvatting
Goed gedaan! Je hebt de basis van unit testing met Jest geleerd. We hebben behandeld:
- Wat unit testing is en wat de voordelen ervan zijn.
- Hoe je Jest installeert en instelt.
- Hoe je tests structureert met
describeentest. - Hoe je controles uitvoert met
expecten matchers zoals.toBe()en.toEqual(). - Hoe je asynchrone code afhandelt met
async/await.
Blijf oefenen en veel plezier met testen!
Leer JavaScript met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 22
- Lessen
- 92
Veelgestelde vragen
Is de les “Unit testing met Jest” gratis?
Ja — de volledige tekst van “Unit testing met Jest” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Bootcamp backendontwikkeling met Node.js wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Bootcamp backendontwikkeling met Node.js bevat in totaal 4 lessen.
Wat leer ik in “Unit testing met Jest”?
Leer geïsoleerde unittests schrijven voor afzonderlijke functies en modules met het Jest-testframework. Je oefent met Bootcamp backendontwikkeling met Node.js door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Bootcamp backendontwikkeling met Node.js te beginnen?
Ervaring vooraf is niet nodig. Bootcamp backendontwikkeling met Node.js op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.
Hoe lang duurt de les “Unit testing met Jest”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Bootcamp backendontwikkeling met Node.js?
Ja. Elke les over Bootcamp backendontwikkeling met Node.js bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Unit testing met Jest
- Integratietesten van API-eindpunten
- Effectieve technieken voor foutopsporing
- Mocking en test doubles in Node.js