Testování funkcí a metod s Chai

 Testování funkcí pro vyvolání správných výjimek

K otestování výjimek můžeme použít throw výraz poskytnutý Chai. Toto tvrzení nám umožňuje určit typ výjimky, která by měla být vyvolána, a jakékoli další podrobnosti, které chceme ověřit. Zahrnutím tohoto tvrzení do našich testovacích případů můžeme zajistit, že se naše funkce budou chovat podle očekávání a přiměřeně zpracovat chybové stavy.

Uvažujme příklad, kdy máme funkci, která dělí dvě čísla. Chceme zajistit, aby funkce při dělení nulou vyvolala výjimku. Můžeme napsat testovací případ pomocí tvrzení Chai 's throw, abychom zkontrolovali, zda funkce správně vyhodí a DivideByZeroError při dělení nulou.

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);  
  });  
});  

Ve výše uvedeném příkladu používáme to.throw aserci k ověření, že funkce při dělení nulou divide vyhodí a. DivideByZeroError Aserce je zabalena do funkce, aby mohla zachytit výjimku a provést potřebné kontroly.

Zahrnutím testů správného vyvolání výjimek můžeme zajistit, že naše funkce zvládnou chybové stavy správně a poskytují smysluplnou zpětnou vazbu, když nastanou neočekávané situace. To pomáhá zlepšit celkovou kvalitu a spolehlivost našeho kódu.

Závěrem lze říci, že testování funkcí, které vyvolávají výjimky, je důležitým aspektem testování softwaru. S tvrzením Chai 's throw můžeme snadno ověřit, že naše funkce v případě potřeby vyvolávají očekávané výjimky. Začleněním těchto testů do naší testovací strategie můžeme zvýšit robustnost našich aplikací a poskytnout lepší uživatelskou zkušenost.

Ve třetím článku ze série "Node.js, Mocha a Chai " prozkoumáme, jak testovat funkce a metody pomocí Chai. Chai je výkonná knihovna asercí pro testování hodnot a výsledků v JavaScript kódu.

 

Testování objektových metod a jejich chování

K ověření metod objektu můžeme použít aserce poskytované testovacími frameworky jako Mocha a Chai. Tato tvrzení nám umožňují vytvářet tvrzení o vlastnostech a chování objektů.

Vezměme si příklad, kdy máme objekt volaný calculator metodami pro sčítání, odčítání, násobení a dělení. Chceme zajistit, aby tyto metody vracely správné výsledky. Můžeme napsat testovací případy pomocí Chai asercí 's, abychom ověřili chování těchto 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);  
  });  
});  

Ve výše uvedeném příkladu používáme aserci Chai 's expect k ověření, že metody objektu calculator vracejí očekávané výsledky. Každý testovací případ se zaměřuje na konkrétní metodu a kontroluje, zda vrací správný výstup pro daný vstup.

Spuštěním těchto testovacích případů můžeme zajistit, aby se metody objektu calculator chovaly podle očekávání a poskytovaly přesné výsledky.

Kromě kontroly návratových hodnot metod můžeme aserce použít i k ověření dalších vlastností a chování objektů. Chai poskytuje širokou škálu tvrzení, která nám umožňují provádět různé druhy tvrzení o objektech, jako je kontrola hodnot vlastností, ověřování vyvolání metod a další.

Důkladným testováním metod objektu můžeme zajistit jejich správnost a spolehlivost, což přispívá k celkové kvalitě naší kódové základny.