Node.js-taustakehityksen bootcamp · Oppitunti

Yksikkötestaus Jestillä

Opitte kirjoittamaan yksittäisten funktioiden ja moduulien eristettyjä yksikkötestejä Jest-testauskehyksellä.

Oppitunti 1/411 vaihetta

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- ja test-funktioilla.
  • Väitteiden tekeminen expect-funktiolla ja matchereilla, kuten .toBe() ja .toEqual().
  • Asynkronisen koodin käsittely async/await-rakenteella.

Jatkakaa harjoittelua ja mukavia testaushetkiä!

Aloita maksutta

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

  1. Yksikkötestaus Jestillä
  2. API-päätepisteiden integraatiotestaus
  3. Tehokkaat virheenkorjaustekniikat
  4. Mockit ja testikaksoisolennot Node.js:ssä
← Takaisin: Node.js-taustakehityksen bootcamp