Preizkušanje funkcij za vračanje pravilnih izjem
Za testiranje izjem lahko uporabimo throwtrditev, ki jo je ponudil 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 Chaijeve throwtrditve, da preverimo, ali funkcija pravilno vrže a DivideByZeroErrorpri 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.throwda preverimo, ali dividefunkcija vrže a DivideByZeroErrorpri 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 izjeme 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 Chaijevo throwtrditvijo lahko preprosto preverimo, ali naše funkcije vržejo pričakovane izjeme, ko je to potrebno. 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 testirati funkcije in metode z uporabo Chai. Chai je zmogljiva knjižnica trditev za testiranje vrednosti in rezultatov v kodi JavaScript.
Testiranje objektnih metod in njihovega vedenja
Za preverjanje metod objekta lahko uporabimo trditve, ki jih nudijo testna ogrodja, 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 calculatorz metodami za seštevanje, odštevanje, množenje in deljenje. Želimo zagotoviti, da te metode vračajo pravilne rezultate. Testne primere lahko napišemo z uporabo Chaijevih trditev, da preverimo obnašanje teh metod.
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 Chaijevo expecttrditev, da preverimo, ali metode objekta calculatorvračajo 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 calculatorobnaš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 široko paleto trditev, ki nam omogočajo, da naredimo različne vrste trditev o objektih, kot je preverjanje vrednosti lastnosti, preverjanje klicev metod in drugo.
S temeljitim testiranjem metod objekta lahko zagotovimo njihovo pravilnost in zanesljivost, kar prispeva k splošni kakovosti naše kodne baze.