Enhetstesting med Jest
Lær å skrive isolerte enhetstester for individuelle funksjoner og moduler ved hjelp av testrammeverket Jest.
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
describeogtest. - Hvordan man lager påstander ved hjelp av
expectog matchere som.toBe()og.toEqual(). - Hvordan asynkron kode håndteres med
async/await.
Fortsett å øve, og lykke til med testingen!
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
- Enhetstesting med Jest
- Integrasjonstesting av API-endepunkter
- Effektive feilsøkingsteknikker
- Mocking og testdobler i Node.js