Testiranje funkcija za bacanje točnih iznimaka
Za testiranje iznimaka možemo upotrijebiti throw
tvrdnju koju daje Chai. Ova nam tvrdnja omogućuje da navedemo vrstu iznimke koju treba izbaciti i sve dodatne detalje koje želimo potvrditi. Uključivanjem ove tvrdnje u naše testne slučajeve možemo osigurati da se naše funkcije ponašaju prema očekivanjima i da ispravno obrađuju uvjete pogreške.
Razmotrimo primjer gdje imamo funkciju koja dijeli dva broja. Želimo osigurati da funkcija izbacuje iznimku prilikom dijeljenja s nulom. Možemo napisati testni slučaj koristeći Chai 's throw
tvrdnju da provjerimo izbacuje li funkcija ispravno a DivideByZeroError
pri dijeljenju s nulom.
const { expect } = require('chai');
function divide(a, b) {
if(b === 0) {
throw new Error('DivideByZeroError');
}
return a / b;
}
describe('divide',() => {
it('should throw DivideByZeroError when dividing by zero',() => {
expect(() => divide(10, 0)).to.throw('DivideByZeroError');
});
it('should return the correct result when dividing two numbers',() => {
expect(divide(10, 5)).to.equal(2);
});
});
U gornjem primjeru koristimo se to.throw
tvrdnjom da potvrdimo da divide
funkcija izbacuje a DivideByZeroError
pri dijeljenju s nulom. Tvrdnja je umotana u funkciju tako da može uhvatiti iznimku i izvršiti potrebne provjere.
Uključivanjem testova za ispravno izbacivanje iznimke možemo osigurati da naše funkcije ispravno obrađuju uvjete pogreške i daju značajne povratne informacije kada se pojave neočekivane situacije. To pomaže u poboljšanju ukupne kvalitete i pouzdanosti našeg koda.
Zaključno, testiranje funkcija koje bacaju iznimke važan je aspekt testiranja softvera. Uz Chai 's throw
assertion, možemo lako provjeriti izbacuju li naše funkcije očekivane iznimke kada je to potrebno. Uključivanjem ovih testova u našu strategiju testiranja, možemo poboljšati robusnost naših aplikacija i pružiti bolje korisničko iskustvo.
U trećem članku serije "Node.js, Mocha i Chai " istražit ćemo kako testirati funkcije i metode pomoću Chai. Chai moćna je biblioteka tvrdnji za testiranje vrijednosti i ishoda u JavaScript kodu.
Metode testiranja objekata i njihova ponašanja
Kako bismo provjerili metode objekta, možemo koristiti tvrdnje koje pružaju okviri za testiranje kao što su Mocha i Chai. Ove nam tvrdnje omogućuju da donosimo tvrdnje o svojstvima i ponašanju objekata.
Razmotrimo primjer gdje imamo objekt koji se poziva calculator
s metodama za zbrajanje, oduzimanje, množenje i dijeljenje. Želimo osigurati da ove metode vraćaju točne rezultate. Možemo napisati testne slučajeve koristeći Chai tvrdnje za provjeru ponašanja ovih metoda.
const { expect } = require('chai');
const calculator = {
add:(a, b) => a + b,
subtract:(a, b) => a- b,
multiply:(a, b) => a * b,
divide:(a, b) => a / b,
};
describe('calculator',() => {
it('should return the correct sum when adding two numbers',() => {
expect(calculator.add(5, 3)).to.equal(8);
});
it('should return the correct difference when subtracting two numbers',() => {
expect(calculator.subtract(5, 3)).to.equal(2);
});
it('should return the correct product when multiplying two numbers',() => {
expect(calculator.multiply(5, 3)).to.equal(15);
});
it('should return the correct quotient when dividing two numbers',() => {
expect(calculator.divide(6, 3)).to.equal(2);
});
});
U gornjem primjeru koristimo tvrdnju Chai 's expect
kako bismo potvrdili da metode objekta calculator
vraćaju očekivane rezultate. Svaki se testni slučaj usredotočuje na određenu metodu i provjerava vraća li točan izlaz za dani ulaz.
Pokretanjem ovih testnih slučajeva možemo osigurati da se metode objekta calculator
ponašaju prema očekivanjima i daju točne rezultate.
Osim provjere povratnih vrijednosti metoda, također možemo koristiti tvrdnje za provjeru drugih svojstava i ponašanja objekata. Chai pruža širok raspon tvrdnji koje nam omogućuju da napravimo različite vrste tvrdnji na objektima, kao što je provjera vrijednosti svojstava, provjera pozivanja metoda i više.
Temeljitim testiranjem metoda objekta možemo osigurati njihovu ispravnost i pouzdanost, što pridonosi ukupnoj kvaliteti naše baze kodova.