Testų optimizavimas ir organizavimas naudojant Mocha ir Chai

Programinės įrangos kūrimo procese labai svarbu optimizuoti ir organizuoti testus, kad būtų užtikrintas tikslumas ir efektyvumas testavimo etape. Šiame straipsnyje mes išnagrinėsime, kaip optimizuoti ir organizuoti testus naudojant Node.js Mocha ir jame. Chai

Testų optimizavimas ir organizavimas pagerina testavimo procesą, sumažina klaidų skaičių ir padidina jūsų programos patikimumą. Įdiegę šiuos metodus, galite efektyviai valdyti ir vykdyti savo Node.js projekto testus naudodami Mocha ir Chai.

 

Bandymo organizacija:

  • Testų skirstymas į kategorijas pagal funkcionalumą: Organizuojant testus pagal funkcionalumą, lengviau valdyti ir nustatyti kiekvienos konkrečios projekto funkcijos testavimo tikslus.
  • Įdėtųjų aprašų naudojimas: naudokite įdėtuosius aprašus, kad sukurtumėte hierarchinę testų organizavimo struktūrą. Tai padeda išlaikyti aiškią ir skaitomą bandymų rinkinio struktūrą.

 

Kabliukų naudojimas sąrankos ir išardymo užduotims atlikti prieš ir po bandymų

  • Kabliukų naudojimas: Mocha pateikia kabliukus, pvz. before, after, beforeEach, , ir afterEach prieš ir po bandymo operacijas atlikti. Kabliukų naudojimas padeda sutaupyti laiko ir pagerinti bendrą testų našumą.
  • Naudojimas skip ir only nurodymai: skip direktyva leidžia praleisti nereikalingus bandymus kūrimo metu. Direktyva only leidžia vykdyti konkrečius testus, o tai naudinga, kai reikia išbandyti tik nedidelę kodų bazės dalį.

Pavyzdys:

describe('Calculator',() => {  
  beforeEach(() => {  
    // Set up data for all tests within this describe block  
  });  
  
  afterEach(() => {  
    // Clean up after running all tests within this describe block  
  });  
  
  describe('Addition',() => {  
    it('should return the correct sum',() => {  
      // Test addition operation  
    });  
  
    it('should handle negative numbers',() => {  
      // Test addition with negative numbers  
    });  
  });  
  
  describe('Subtraction',() => {  
    it('should return the correct difference',() => {  
      // Test subtraction operation  
    });  
  
    it('should handle subtracting a larger number from a smaller number',() => {  
      // Test subtraction when subtracting a larger number from a smaller number  
    });  
  });  
});  

 

Testų grupavimas ir aprašo blokų naudojimas organizavimui

Norėdami organizuoti ir grupuoti bandymus kartu, galime naudoti describe blokus testavimo sistemoje, pvz. Mocha ,. Blokas describe leidžia sugrupuoti susijusius testus pagal konkrečią temą ar tikslą.

Štai pavyzdys, kaip naudoti describe blokus su objektu susijusiems testams organizuoti Calculator:

const { expect } = require('chai');  
  
class Calculator {  
  add(a, b) {  
    return a + b;  
  }  
  
  subtract(a, b) {  
    return a- b;  
  }  
  
  multiply(a, b) {  
    return a * b;  
  }  
  
  divide(a, b) {  
    if(b === 0) {  
      throw new Error('Cannot divide by zero');  
    }  
    return a / b;  
  }  
}  
  
describe('Calculator',() => {  
  let calculator;  
  
  beforeEach(() => {  
    calculator = new Calculator();  
  });  
  
  describe('add()',() => {  
    it('should return the sum of two numbers',() => {  
      const result = calculator.add(5, 3);  
      expect(result).to.equal(8);  
    });  
  });  
  
  describe('subtract()',() => {  
    it('should return the difference of two numbers',() => {  
      const result = calculator.subtract(5, 3);  
      expect(result).to.equal(2);  
    });  
  });  
  
  describe('multiply()',() => {  
    it('should return the product of two numbers',() => {  
      const result = calculator.multiply(5, 3);  
      expect(result).to.equal(15);  
    });  
  });  
  
  describe('divide()',() => {  
    it('should return the quotient of two numbers',() => {  
      const result = calculator.divide(6, 3);  
      expect(result).to.equal(2);  
    });  
  
    it('should throw an error when dividing by zero',() => {  
      expect(() => calculator.divide(6, 0)).to.throw('Cannot divide by zero');  
    });  
  });  
});  

Aukščiau pateiktame pavyzdyje mes naudojame describe blokus, kad sugrupuotume testus, susijusius su kiekvienu objekto metodu Calculator. Taip pat naudojame beforeEach bloką, kad sukurtume naują Calculator objektą prieš vykdydami kiekvieną testą.

Naudodami describe blokus galime aiškiai ir struktūriškai organizuoti ir grupuoti testus, kad būtų lengva suprasti ir valdyti testo kodą.

 

Testavimo proceso pritaikymas naudojant papildinius ir reporterius

Naudodami testavimo sistemas, tokias kaip Mocha ir Chai, galime pritaikyti testavimo procesą naudodami papildinius ir reporterius. Štai keli pavyzdžiai, kaip naudoti papildinius ir reporterius testavimo procesui tinkinti:

  1. Mocha įskiepiai : Mocha palaiko papildinių naudojimą, kad išplėstų savo funkcijas. Pavyzdžiui, galite naudoti mocha-parallel-tests bandymams vykdyti vienu metu, o tai gali pagreitinti vykdymą. Šį papildinį galite įdiegti naudodami npm ir naudoti jį savo Mocha konfigūracijos faile.

  2. Chai įskiepiai : Chai taip pat teikia įskiepių, skirtų išplėsti savo funkcijas. Pavyzdžiui, galite naudoti chai-http norėdami išbandyti HTTP užklausas savo bandymuose. Panašiai įdiegiate šį papildinį per npm ir tada naudojate jį savo bandomuosiuose failuose.

  3. Reporteriai : Mocha palaiko įvairių tipų reporterius, kad būtų rodomi bandymų rezultatai. Populiarus reporteris yra mocha-reporter, kuris pateikia skirtingus ataskaitų formatus, pvz., specifikaciją, tašką ir kt. Galite nurodyti reporterį, kurį norite naudoti, naudodami komandų eilutės parinktis arba konfigūracijos faile.

Pavyzdžiui, norėdami naudoti reporterį mocha-reporter, galite paleisti šią komandą:

mocha --reporter mocha-reporter tests/*.js

Tai atliks testus kataloge tests ir parodys rezultatus naudodami reporterį mocha-reporter.

Naudodami papildinius ir reporterius galite tinkinti ir išplėsti projekto funkcijas Mocha bei Chai pritaikyti savo projekto testavimo poreikius.