Bootcamp i backendudvikling med Node.js · Lektion

Enhedstest med Jest

Lær at skrive isolerede enhedstests til individuelle funktioner og moduler ved hjælp af testframeworket Jest.

Lektion 1 af 411 trin

Enhedstest med Jest er en gratis Bootcamp i backendudvikling med Node.js-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Bootcamp i backendudvikling med Node.js, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Bootcamp i backendudvikling med Node.js-kurset indeholder 4 lektioner i alt.

Hvad er enhedstest?

Velkommen til enhedstest! Det er en grundlæggende praksis inden for softwareudvikling, hvor de enkelte komponenter eller funktioner i din applikation testes isoleret.

Tænk på det som at kontrollere hvert tandhjul i et ur for sig for at sikre, at det fungerer perfekt, før hele mekanismen samles. Det hjælper med at finde fejl tidligt!

Mød Jest: Din testmakker

Til Node.js er Jest et af de mest populære og udviklervenlige testrammer. Det er udviklet af Facebook og tilbyder en komplet, integreret løsning til test af JavaScript.

  • Ingen konfiguration: Fungerer ofte direkte uden yderligere opsætning.
  • Hurtig: Udviklet med fokus på ydeevne.
  • Omfattende API: Et effektivt bibliotek til påstande (matchere) er inkluderet.
  • Snapshot-test: Velegnet til UI-komponenter.

Installation af Jest

Det er nemt at komme i gang med Jest. Du installerer det som en udviklingsafhængighed i dit Node.js-projekt. Åbn en terminal i projektets rodmappe, og kør:

npm install --save-dev jest

Efter installationen kan du tilføje et script til din package.json-fil, så du nemt kan køre dine test:

"scripts": { "test": "jest" }

Vores første funktion, der skal testes

Lad os skrive en enkel funktion, som vi vil teste. Denne funktion lægger to tal sammen. Vi placerer den i en fil med navnet sum.js.

Du kan køre denne fil direkte for at se funktionen i brug, men senere bruger vi Jest til at teste den automatisk!

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
}

Strukturering af din testfil

Jest leder efter testfiler med bestemte navngivningskonventioner, normalt .test.js eller .spec.js. Lad os oprette sum.test.js i den samme mappe.

I den bruger vi describe() til at gruppere relaterede test og test() (eller it()) til de enkelte testtilfælde. Det gør dine test organiserede og læsevenlige.

Påstande med matchere

I en test()-blok bruger vi expect() sammen med en "matcher" til at kontrollere, at en værdi opfylder bestemte betingelser. For eksempel kontrollerer .toBe() eksakt lighed.

Sådan tester vi vores sum-funktion:

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);
  });
});

Kørsel af dine test

Nu hvor du har dine sum.js- og sum.test.js-filer, og Jest er installeret med det konfigurerede script, kan du køre dine test!

Skriv blot npm test i din terminal. Jest finder dine .test.js-filer, udfører dem og rapporterer resultaterne. Du får vist grønt, hvis alle test består!

Håndtering af asynkrone test

Mange Node.js-applikationer arbejder med asynkrone operationer (som hentning af data og databasekald). Jest håndterer dette på en fremragende måde!

Du kan bruge async/await direkte i dine testfunktioner. Jest venter på, at løftet bliver opfyldt, før testen afsluttes.

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));
}

Skrivning af asynkrone test

Hvis vi vil teste vores fetchData-funktion, markerer vi testfunktionen som async. Jest tilbyder også særlige matchere som .resolves og .rejects til løfter.

Hvis du bruger await i din test, kommer asynkron kode til at ligne synkron kode, hvilket forbedrer læsbarheden.

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');
  });
});

Kontrol af Jest-matchere

Hvilken af følgende Jest-matchere vil du bruge til at kontrollere, om to objekter har den samme værdi (dyb sammenligning), og ikke blot om de er den samme instans?

Enhedstest med Jest: Opsummering

Godt klaret! Du har lært det grundlæggende i enhedstest med Jest. Vi gennemgik:

  • Hvad enhedstest er, og hvilke fordele det giver.
  • Hvordan Jest installeres og konfigureres.
  • Strukturering af test med describe og test.
  • Oprettelse af påstande ved hjælp af expect og matchere som .toBe() og .toEqual().
  • Håndtering af asynkron kode med async/await.

Bliv ved med at øve dig, og god fornøjelse med testene!

Gratis at komme i gang

Lær JavaScript med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
22
Lektioner
92

Ofte stillede spørgsmål

Er lektionen “Enhedstest med Jest” gratis?

Ja — hele teksten til “Enhedstest med Jest” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Bootcamp i backendudvikling med Node.js-kurset, skal du opgradere til CoddyKit PRO. Bootcamp i backendudvikling med Node.js-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Enhedstest med Jest”?

Lær at skrive isolerede enhedstests til individuelle funktioner og moduler ved hjælp af testframeworket Jest. Du øver dig i Bootcamp i backendudvikling med Node.js med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Bootcamp i backendudvikling med Node.js?

Der kræves ingen tidligere erfaring. Bootcamp i backendudvikling med Node.js på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Enhedstest med Jest”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Bootcamp i backendudvikling med Node.js-lektion?

Ja. Alle Bootcamp i backendudvikling med Node.js-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Enhedstest med Jest
  2. Integrationstest af API-endepunkter
  3. Effektive fejlfindingsmetoder
  4. Mocking og test doubles i Node.js
← Tilbage til Bootcamp i backendudvikling med Node.js