Enhedstest med Jest
Lær at skrive isolerede enhedstests til individuelle funktioner og moduler ved hjælp af testframeworket Jest.
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
describeogtest. - Oprettelse af påstande ved hjælp af
expectog 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!
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
- Enhedstest med Jest
- Integrationstest af API-endepunkter
- Effektive fejlfindingsmetoder
- Mocking og test doubles i Node.js