Preizkušanje funkcij za vračanje pravilnih izjem
Za testiranje izjem lahko uporabimo throw
trditev, ki jo ponuja Chai. Ta trditev nam omogoča, da določimo vrsto izjeme, ki naj bo vržena, in vse dodatne podrobnosti, ki jih želimo preveriti. Z vključitvijo te trditve v naše testne primere lahko zagotovimo, da se naše funkcije obnašajo po pričakovanjih in ustrezno obravnavajo pogoje napak.
Oglejmo si primer, kjer imamo funkcijo, ki deli dve števili. Želimo zagotoviti, da funkcija vrže izjemo pri deljenju z nič. Lahko napišemo testni primer z uporabo Chai trditve throw
, da preverimo, ali funkcija pravilno vrže a DivideByZeroError
pri deljenju z ničlo.
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);
});
});
V zgornjem primeru uporabimo trditev, to.throw
da preverimo, ali divide
funkcija vrže a DivideByZeroError
pri deljenju z ničlo. Trditev je ovita v funkcijo, tako da lahko ujame izjemo in izvede potrebna preverjanja.
Z vključitvijo testov za pravilno vrženje izjem lahko zagotovimo, da naše funkcije ustrezno obravnavajo stanja napak in zagotovijo smiselne povratne informacije, ko pride do nepričakovanih situacij. To pomaga izboljšati splošno kakovost in zanesljivost naše kode.
Skratka, testiranje funkcij, ki ustvarjajo izjeme, je pomemben vidik testiranja programske opreme. S Chai trditvijo throw
lahko preprosto preverimo, ali naše funkcije po potrebi vržejo pričakovane izjeme. Z vključitvijo teh testov v našo strategijo testiranja lahko povečamo robustnost naših aplikacij in zagotovimo boljšo uporabniško izkušnjo.
V tretjem članku serije "Node.js, Mocha in Chai " bomo raziskali, kako preizkusiti funkcije in metode z uporabo Chai. Chai je zmogljiva knjižnica trditev za testiranje vrednosti in rezultatov v JavaScript kodi.
Testiranje objektnih metod in njihovega vedenja
Za preverjanje metod objekta lahko uporabimo trditve, ki jih zagotavljajo ogrodja za testiranje, kot sta Mocha in Chai. Te trditve nam omogočajo, da trdimo o lastnostih in obnašanju predmetov.
Oglejmo si primer, kjer imamo predmet, ki se kliče calculator
z metodami za seštevanje, odštevanje, množenje in deljenje. Želimo zagotoviti, da te metode vračajo pravilne rezultate. Za preverjanje obnašanja teh metod lahko napišemo testne primere z uporabo Chai trditev.
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);
});
});
V zgornjem primeru uporabimo trditev, Chai da expect
preverimo, ali metode objekta calculator
vrnejo pričakovane rezultate. Vsak preskusni primer se osredotoča na določeno metodo in preverja, ali vrne pravilen izhod za dani vhod.
Z izvajanjem teh testnih primerov lahko zagotovimo, da se metode objekta calculator
obnašajo po pričakovanjih in zagotavljajo natančne rezultate.
Poleg preverjanja vrnjenih vrednosti metod lahko uporabimo tudi trditve za preverjanje drugih lastnosti in obnašanja objektov. Chai ponuja širok nabor trditev, ki nam omogočajo izdelavo različnih vrst trditev o objektih, kot je preverjanje vrednosti lastnosti, preverjanje klicev metod in še več.
S temeljitim testiranjem metod objekta lahko zagotovimo njihovo pravilnost in zanesljivost, kar prispeva k splošni kakovosti naše kodne baze.