Yksikkötestaus Jestillä
Opitte kirjoittamaan yksittäisten funktioiden ja moduulien eristettyjä yksikkötestejä Jest-testauskehyksellä.
Yksikkötestaus Jestillä on ilmainen Node.js-taustakehityksen bootcamp-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Node.js-taustakehityksen bootcamp-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Node.js-taustakehityksen bootcamp-kurssilla on yhteensä 4 oppituntia.
Mitä yksikkötestaus on?
Tervetuloa tutustumaan yksikkötestaukseen! Se on ohjelmistokehityksen perustavanlaatuinen käytäntö, jossa sovelluksen yksittäiset komponentit tai funktiot testataan erillään muusta sovelluksesta.
Ajatelkaa sitä niin, että tarkistaisitte kellon jokaisen rattaan erikseen varmistaaksenne niiden toimivuuden ennen koko mekanismin kokoamista. Näin virheet voidaan havaita varhain!
Tutustukaa Jestiin: testauksen apurinne
Node.js:ää varten Jest on yksi suosituimmista ja kehittäjäystävällisimmistä testauskehyksistä. Sen on kehittänyt Facebook, ja se tarjoaa kattavan, integroidun ratkaisun JavaScriptin testaamiseen.
- Ei määrityksiä: Toimii usein suoraan ilman lisämäärityksiä.
- Nopea: Suunniteltu tehokkaaksi.
- Monipuolinen ohjelmointirajapinta: Mukana on tehokas väitekirjasto (matchers).
- Snapshot-testaus: Sopii erinomaisesti käyttöliittymäkomponenteille.
Jestin asentaminen
Jestin käytön aloittaminen on helppoa. Asennatte sen Node.js-projektinne kehitysriippuvuudeksi. Avatkaa pääte projektinne juurihakemistossa ja suorittakaa:
npm install --save-dev jest
Asennuksen jälkeen voitte lisätä package.json-tiedostoon komentosarjan, jolla testit on helppo suorittaa:
"scripts": { "test": "jest" }
Ensimmäinen testattava funktiomme
Kirjoitetaan yksinkertainen funktio, jonka haluamme testata. Tämä funktio laskee yhteen kaksi lukua. Sijoitetaan se tiedostoon nimeltä sum.js.
Voitte suorittaa tämän tiedoston suoraan nähdäksenne funktion toiminnassa, mutta myöhemmin käytämme Jestiä sen automaattiseen testaamiseen!
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
}Testitiedoston jäsentäminen
Jest etsii testitiedostoja tiettyjen nimeämiskäytäntöjen perusteella, yleensä .test.js- tai .spec.js-päätteellä. Luodaan samaan hakemistoon tiedosto sum.test.js.
Käytämme sen sisällä describe()-funktiota toisiinsa liittyvien testien ryhmittelemiseen ja test()-funktiota (tai it()-funktiota) yksittäisiin testitapauksiin. Näin testit pysyvät järjestettyinä ja helppolukuisina.
Väitteiden tekeminen matchereilla
test()-lohkon sisällä käytämme expect()-funktiota yhdessä "matcherin" kanssa varmistaaksemme, että arvo täyttää tietyt ehdot. Esimerkiksi .toBe() tarkistaa tarkan yhtäsuuruuden.
Näin testaisimme sum-funktiomme:
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);
});
});Testien suorittaminen
Nyt kun teillä on tiedostot sum.js ja sum.test.js, ja Jest on asennettu sekä komentosarja määritetty, voitte suorittaa testinne!
Kirjoittakaa päätteeseen npm test. Jest löytää .test.js-tiedostonne, suorittaa ne ja ilmoittaa tulokset. Jos kaikki testit läpäistään, näette vihreän tuloksen!
Asynkronisten testien käsittely
Monet Node.js-sovellukset käsittelevät asynkronisia toimintoja, kuten tietojen hakemista ja tietokantakutsuja. Jest käsittelee nämä erinomaisesti!
Voitte käyttää async/await-rakennetta suoraan testifunktioissanne. Jest odottaa promisen valmistumista ennen testin päättämistä.
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));
}Asynkronisten testien kirjoittaminen
Testataksemme fetchData-funktiota merkitsemme testifunktion async-määritteellä. Jest tarjoaa promiseille myös erityisiä matchereita, kuten .resolves ja .rejects.
await-avainsanan käyttäminen testissä saa asynkronisen koodin näyttämään synkroniselta ja parantaa luettavuutta.
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');
});
});Jestin matcher-tarkistus
Mitä seuraavista Jestin matchereista käyttäisitte tarkistamaan, että kahdella oliolla on sama arvo (syvävertailu), eikä vain sitä, että kyseessä on sama ilmentymä?
Yksikkötestaus Jestillä: yhteenveto
Hienoa työtä! Olette oppineet Jestin avulla tehtävän yksikkötestauksen perusteet. Käsittelimme seuraavat aiheet:
- Mitä yksikkötestaus on ja mitä hyötyä siitä on.
- Jestin asentaminen ja määrittäminen.
- Testien jäsentäminen
describe- jatest-funktioilla. - Väitteiden tekeminen
expect-funktiolla ja matchereilla, kuten.toBe()ja.toEqual(). - Asynkronisen koodin käsittely
async/await-rakenteella.
Jatkakaa harjoittelua ja mukavia testaushetkiä!
Opi JavaScript tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 22
- Oppitunnit
- 92
Usein kysytyt kysymykset
Onko oppitunti ”Yksikkötestaus Jestillä” ilmainen?
Kyllä – oppitunnin ”Yksikkötestaus Jestillä” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Node.js-taustakehityksen bootcamp-kurssin, päivitä CoddyKit PROhon. Node.js-taustakehityksen bootcamp-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Yksikkötestaus Jestillä”?
Opitte kirjoittamaan yksittäisten funktioiden ja moduulien eristettyjä yksikkötestejä Jest-testauskehyksellä. Harjoittelet Node.js-taustakehityksen bootcamp-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Node.js-taustakehityksen bootcamp-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Node.js-taustakehityksen bootcamp-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Yksikkötestaus Jestillä”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Node.js-taustakehityksen bootcamp-oppitunnilla?
Kyllä. Jokainen Node.js-taustakehityksen bootcamp-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Yksikkötestaus Jestillä
- API-päätepisteiden integraatiotestaus
- Tehokkaat virheenkorjaustekniikat
- Mockit ja testikaksoisolennot Node.js:ssä