Tredun ohjelmistokehittäjien kurssimateriaaleja
expect-lausekkeiden avulla tutkitaan onko testattavan funktion paluuarvo halutunlainen. Sitä käytetään erilaisten vertailujen (matcher) kanssa.
toBe toimii lukujen, merkkijonojen, totuusarvojen sekä arvojen null ja undefined kanssa, mutta se ei tarkista esim. objektin tai taulukon kenttiä rekursiivisesti.
test('yhteenlasku kokonaisluvuilla', () => {
const tulos = yhteenlasku(2, 3);
expect(tulos).toBe(5);
});
toEqual testaa myös objektin tai taulukon kentien sisällöt rekursiivisesti.
test('ovatko kaksi objektia identtiset', () => {
const tulos = etunimiSukunimi(["Janne", "Kinnunen"]);
expect(tulos).toEqual({etunimi: "Janne", sukunimi: "Kinnunen"});
});
Myös erisuuruutta voi testata lisäämällä .not..
expect(tulos).not.toEqual({});
JavaScript tulkitsee esim. if-lauseissa epätodeksi muitakin kuin varsinaisia totuusarvoja, siis varsinaisen false:n lisäksi epätodeksi tulkitaan undefined, null ja 0. Sama pätee tutuusarvoon true, jollaiseksi tulkitaan kaikki muu.
Joskus on siis tarpeen tutkia onko funktion paluuarvo,joten false:n tyyppinen eli toBeFalsy. Vstaavasti toBeTruthy.
test('paluuarvo kuin false', () => {
const tulos = alleKymmenen(22);
expect(tulos).toBeFalsy();
});
Joskus riittää, että tulos ei ole täsmälleen jokin tietty vaan jonkin alueen sisällä.
expect(tulos).toBeGreaterThan(3);
expect(tulos).toBeGreaterThanOrEqual(3.5);
expect(tulos).toBeLessThan(5);
expect(tulos).toBeLessThanOrEqual(4.5);
Kun lasketaan floating point-luvuilla, laskuihin saattaa tulla pyöristysvirhettä. Silloin voi olla tarpeen verrata ovatko luvut melkein samat.
expect(tulos).toBeCloseTo(0.3);
Merkkijonoa voidaan testata käyttäen regular expression:ia:
expect(tulos).not.toMatch(/ei/);
expect(tulos).toMatch(/maanantai/);
Testi voi testata onko taulukossa mukana tietty alkio:
expect(tulos).toContain('hiiri');
Virhetilanteissa funktion tulisi heittää poikkeus ja tätä voidaan testata (poikkeus yleisesti, poikkeus tietyllä virheilmoituksella jne):
expect(testattavaFunktio).toThrow();
expect(testattavaFunktio).toThrow('nollalla jakaminen');
Huom Testattavassa funktiossa poikkeus heitetään näin:
function testattavaFunktio() {
throw new Error('nollalla jakaminen');
}