Bootcamp backendontwikkeling met Node.js · Les

Unit testing met Jest

Leer geïsoleerde unittests schrijven voor afzonderlijke functies en modules met het Jest-testframework.

Les 1 van 411 stappen

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 describe en test.
  • Hoe je controles uitvoert met expect en matchers zoals .toBe() en .toEqual().
  • Hoe je asynchrone code afhandelt met async/await.

Blijf oefenen en veel plezier met testen!

Gratis beginnen

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

  1. Unit testing met Jest
  2. Integratietesten van API-eindpunten
  3. Effectieve technieken voor foutopsporing
  4. Mocking en test doubles in Node.js
← Terug naar Bootcamp backendontwikkeling met Node.js