Testa funktioner för att kasta rätt undantag
För att testa för undantag kan vi använda påståendet throw
från Chai. Detta påstående tillåter oss att specificera vilken typ av undantag som ska kastas och eventuella ytterligare detaljer som vi vill validera. Genom att inkludera detta påstående i våra testfall kan vi säkerställa att våra funktioner fungerar som förväntat och hanterar feltillstånd på lämpligt sätt.
Låt oss betrakta ett exempel där vi har en funktion som delar två tal. Vi vill säkerställa att funktionen ger ett undantag när den divideras med noll. Vi kan skriva ett testfall genom att använda Chai 's throw
assertion för att kontrollera om funktionen korrekt kastar a DivideByZeroError
när den divideras med noll.
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);
});
});
I exemplet ovan använder vi to.throw
påståendet för att verifiera att divide
funktionen kastar a DivideByZeroError
när den divideras med noll. Påståendet är insvept i en funktion så att det kan fånga undantaget och utföra nödvändiga kontroller.
Genom att inkludera tester för korrekt undantagskastning kan vi säkerställa att våra funktioner hanterar feltillstånd på lämpligt sätt och ge meningsfull feedback när oväntade situationer inträffar. Detta hjälper till att förbättra den övergripande kvaliteten och tillförlitligheten hos vår kod.
Sammanfattningsvis är att testa funktioner som ger undantag en viktig aspekt av mjukvarutestning. Med Chai 's throw
påstående kan vi enkelt verifiera att våra funktioner ger de förväntade undantagen när det behövs. Genom att införliva dessa tester i vår teststrategi kan vi förbättra robustheten i våra applikationer och ge en bättre användarupplevelse.
I den tredje artikeln i serien "Node.js,, Mocha och Chai " kommer vi att utforska hur man testar funktioner och metoder med Chai. Chai är ett kraftfullt påståendebibliotek för att testa värden och resultat i JavaScript kod.
Testa objektmetoder och deras beteenden
För att verifiera metoderna för ett objekt kan vi använda påståenden från testa ramverk som Mocha och Chai. Dessa påståenden tillåter oss att göra påståenden om objektens egenskaper och beteende.
Låt oss betrakta ett exempel där vi har ett objekt som kallas calculator
med metoder för addition, subtraktion, multiplikation och division. Vi vill säkerställa att dessa metoder ger rätt resultat. Vi kan skriva testfall med hjälp av Chai 's påståenden för att verifiera beteendet hos dessa metoder.
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);
});
});
I exemplet ovan använder vi Chai 's expect
assertion för att verifiera att metoderna för calculator
objektet ger de förväntade resultaten. Varje testfall fokuserar på en specifik metod och kontrollerar om den returnerar rätt utdata för en given ingång.
Genom att köra dessa testfall kan vi säkerställa att metoderna för objektet calculator
beter sig som förväntat och ger korrekta resultat.
Förutom att kontrollera returvärdena för metoder kan vi också använda påståenden för att verifiera andra egenskaper och beteende hos objekt. Chai tillhandahåller ett brett utbud av påståenden som gör att vi kan göra olika typer av påståenden om objekt, som att kontrollera egenskapsvärden, verifiera metodanrop och mer.
Genom att noggrant testa ett objekts metoder kan vi säkerställa deras korrekthet och tillförlitlighet, vilket bidrar till den övergripande kvaliteten på vår kodbas.