Bootcamp i backendutvikling med Node.js · leksjon

Enhetstesting med Jest

Lær å skrive isolerte enhetstester for individuelle funksjoner og moduler ved hjelp av testrammeverket Jest.

Leksjon 1 av 411 trinn

Enhetstesting med Jest er en gratis leksjon i Bootcamp i backendutvikling med Node.js på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Bootcamp i backendutvikling med Node.js, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Bootcamp i backendutvikling med Node.js inneholder totalt 4 leksjoner.

Hva er enhetstesting?

Velkommen til enhetstesting! Dette er en grunnleggende praksis innen programvareutvikling, der individuelle komponenter eller funksjoner i applikasjonen testes isolert.

Tenk på det som å kontrollere hvert tannhjul i en klokke separat for å sikre at det fungerer perfekt før hele mekanismen settes sammen. Dette bidrar til å oppdage feil tidlig!

Møt Jest: Deres testpartner

For Node.js er Jest et av de mest populære og utviklervennlige testrammeverkene. Det er utviklet av Facebook og tilbyr en komplett, integrert løsning for JavaScript-testing.

  • Ingen konfigurasjon: Fungerer ofte rett ut av boksen.
  • Raskt: Utformet med tanke på høy ytelse.
  • Omfattende API: Et kraftig bibliotek for påstander (matchere) er inkludert.
  • Snapshot-testing: Svært nyttig for UI-komponenter.

Installere Jest

Det er enkelt å komme i gang med Jest. De skal installere det som en utviklingsavhengighet i Node.js-prosjektet. Åpne terminalen i prosjektets rotmappe og kjør:

npm install --save-dev jest

Etter installasjonen kan De legge til et skript i package.json-filen for å kjøre testene enkelt:

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

Vår første funksjon som skal testes

La oss skrive en enkel funksjon som vi vil teste. Denne funksjonen skal legge sammen to tall. Vi legger den i en fil som heter sum.js.

De kan kjøre denne filen direkte for å se funksjonen i praksis, men senere bruker vi Jest til å 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
}

Strukturere testfilen

Jest leter etter testfiler med bestemte navnekonvensjoner, vanligvis .test.js eller .spec.js. La oss opprette sum.test.js i samme mappe.

Inne i filen bruker vi describe() til å gruppere relaterte tester og test() (eller it()) til individuelle testtilfeller. Dette gjør testene organiserte og lesbare.

Lage påstander med matchere

Inne i en test()-blokk bruker vi expect() sammen med en «matcher» for å kontrollere at en verdi oppfyller bestemte betingelser. For eksempel kontrollerer .toBe() om verdiene er helt like.

Slik tester vi sum-funksjonen:

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

Kjøre testene

Nå som De har filene sum.js og sum.test.js, og Jest er installert med skriptet konfigurert, kan De kjøre testene!

Skriv ganske enkelt npm test i terminalen. Jest finner .test.js-filene, kjører dem og rapporterer resultatene. De ser grønt hvis alle testene består!

Håndtere asynkrone tester

Mange Node.js-applikasjoner håndterer asynkrone operasjoner, for eksempel henting av data og databasekall. Jest håndterer dette på en god måte!

De kan bruke async/await direkte i testfunksjonene. Jest venter til løftet er oppfylt før testen fullføres.

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

Skrive asynkrone tester

For å teste fetchData-funksjonen markerer vi testfunksjonen som async. Jest tilbyr også spesielle matchere som .resolves og .rejects for løfter.

Ved å bruke await i testen ser asynkron kode synkron ut, noe som gjør den enklere å lese.

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

Kontroll av Jest-matchere

Hvilken av de følgende Jest-matcherne vil De bruke for å kontrollere om to objekter har samme verdi (dyp sammenligning), og ikke bare om de er samme instans?

Enhetstesting med Jest: Oppsummering

Godt jobbet! De har lært det grunnleggende om enhetstesting med Jest. Vi har gått gjennom:

  • Hva enhetstesting er, og hvilke fordeler det gir.
  • Hvordan Jest installeres og konfigureres.
  • Hvordan tester struktureres med describe og test.
  • Hvordan man lager påstander ved hjelp av expect og matchere som .toBe() og .toEqual().
  • Hvordan asynkron kode håndteres med async/await.

Fortsett å øve, og lykke til med testingen!

Gratis å komme i gang

Lær deg JavaScript med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
22
Leksjoner
92

Ofte stilte spørsmål

Er leksjonen «Enhetstesting med Jest» gratis?

Ja – hele teksten i «Enhetstesting med Jest» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Bootcamp i backendutvikling med Node.js-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Bootcamp i backendutvikling med Node.js inneholder totalt 4 leksjoner.

Hva lærer jeg i «Enhetstesting med Jest»?

Lær å skrive isolerte enhetstester for individuelle funksjoner og moduler ved hjelp av testrammeverket Jest. Du øver på Bootcamp i backendutvikling med Node.js med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Bootcamp i backendutvikling med Node.js?

Ingen tidligere erfaring er nødvendig. Bootcamp i backendutvikling med Node.js på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Enhetstesting med Jest»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Bootcamp i backendutvikling med Node.js-leksjonen?

Ja. Alle Bootcamp i backendutvikling med Node.js-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Enhetstesting med Jest
  2. Integrasjonstesting av API-endepunkter
  3. Effektive feilsøkingsteknikker
  4. Mocking og testdobler i Node.js
← Tilbake til Bootcamp i backendutvikling med Node.js