Les proves són una part fonamental del desenvolupament de programari, ja que asseguren que el codi funcioni com s'espera i ajuden a detectar errors abans que arribin a producció. En aquest tema, aprendrem els conceptes bàsics de les proves en Node.js, incloent-hi els tipus de proves, les eines més utilitzades i com començar a escriure proves per a les nostres aplicacions.

Conceptes Clau

Tipus de Proves

  1. Proves Unitàries (Unit Tests):

    • Verifiquen la funcionalitat d'una unitat individual de codi (normalment una funció o mòdul).
    • Són ràpides d'executar i aïllen cada component per assegurar-se que funcioni correctament de manera independent.
  2. Proves d'Integració (Integration Tests):

    • Verifiquen la interacció entre diferents mòduls o serveis.
    • Asseguren que els components funcionin correctament quan es combinen.
  3. Proves de Sistema (System Tests):

    • Verifiquen el sistema complet en un entorn que simula la producció.
    • Inclouen proves d'extrem a extrem (end-to-end) que simulen el comportament de l'usuari.
  4. Proves de Regressió (Regression Tests):

    • Asseguren que els canvis o actualitzacions en el codi no introdueixin nous errors en funcionalitats ja existents.

Eines de Proves en Node.js

  1. Mocha:

    • Un framework de proves flexible i extensible per a Node.js.
    • Permet escriure proves de manera senzilla i estructurada.
  2. Chai:

    • Una biblioteca d'assertions que es pot utilitzar amb Mocha.
    • Proporciona una sintaxi llegible per escriure assertions.
  3. Sinon:

    • Una biblioteca per crear espies (spies), mocks i stubs.
    • Ajuda a simular el comportament de funcions i mòduls per aïllar les proves.

Configuració de l'Entorn de Proves

Instal·lació de Mocha i Chai

Per començar a escriure proves en Node.js, primer hem d'instal·lar Mocha i Chai. Utilitzarem npm per instal·lar aquestes eines.

npm install --save-dev mocha chai

Estructura del Projecte

És recomanable tenir una estructura clara per a les proves dins del projecte. Una estructura típica podria ser:

project-root/
├── src/
│   └── index.js
└── test/
    └── index.test.js

Escriure la Primera Prova

Exemple de Prova Unitària amb Mocha i Chai

Suposem que tenim una funció sum en el nostre fitxer index.js que volem provar.

src/index.js:

function sum(a, b) {
    return a + b;
}

module.exports = sum;

Ara, escriurem una prova per a aquesta funció.

test/index.test.js:

const chai = require('chai');
const expect = chai.expect;
const sum = require('../src/index');

describe('Funció sum', () => {
    it('hauria de retornar la suma de dos nombres', () => {
        const result = sum(2, 3);
        expect(result).to.equal(5);
    });

    it('hauria de retornar un nombre negatiu si la suma és negativa', () => {
        const result = sum(-2, -3);
        expect(result).to.equal(-5);
    });
});

Executar les Proves

Per executar les proves, afegirem un script al nostre package.json:

package.json:

{
  "scripts": {
    "test": "mocha"
  }
}

Ara podem executar les proves amb el següent comandament:

npm test

Exercicis Pràctics

Exercici 1: Provar una Funció de Multiplicació

  1. Crea una funció multiply en un fitxer src/multiply.js que multipliqui dos nombres.
  2. Escriu una prova per a la funció multiply en un fitxer test/multiply.test.js.

Solució:

src/multiply.js:

function multiply(a, b) {
    return a * b;
}

module.exports = multiply;

test/multiply.test.js:

const chai = require('chai');
const expect = chai.expect;
const multiply = require('../src/multiply');

describe('Funció multiply', () => {
    it('hauria de retornar el producte de dos nombres', () => {
        const result = multiply(2, 3);
        expect(result).to.equal(6);
    });

    it('hauria de retornar zero si un dels nombres és zero', () => {
        const result = multiply(0, 5);
        expect(result).to.equal(0);
    });
});

Resum

En aquesta secció, hem après els conceptes bàsics de les proves en Node.js, incloent-hi els tipus de proves i les eines més utilitzades. Hem configurat l'entorn de proves amb Mocha i Chai, i hem escrit la nostra primera prova unitària. A més, hem practicat escrivint proves per a una funció de multiplicació. En el següent tema, aprofundirem en les proves unitàries amb Mocha i Chai, i explorarem com escriure proves més complexes.

Curs de Node.js

Mòdul 1: Introducció a Node.js

Mòdul 2: Conceptes Bàsics

Mòdul 3: Sistema de Fitxers i I/O

Mòdul 4: HTTP i Servidors Web

Mòdul 5: NPM i Gestió de Paquets

Mòdul 6: Framework Express.js

Mòdul 7: Bases de Dades i ORMs

Mòdul 8: Autenticació i Autorització

Mòdul 9: Proves i Depuració

Mòdul 10: Temes Avançats

Mòdul 11: Desplegament i DevOps

Mòdul 12: Projectes del Món Real

© Copyright 2024. Tots els drets reservats