Les proves d'integració són un tipus de proves de programari que verifiquen si diferents mòduls o serveis d'una aplicació funcionen correctament quan es combinen. Aquestes proves són crucials per assegurar-se que els components de l'aplicació interactuen correctament entre ells.

Objectius de les Proves d'Integració

  • Verificar la Interacció entre Mòduls: Assegurar-se que els mòduls o serveis es comuniquen correctament.
  • Detectar Problemes d'Integració: Identificar errors que poden sorgir quan els components es combinen.
  • Assegurar la Funcionalitat Completa: Garantir que l'aplicació funcioni com s'espera en un entorn real.

Configuració de l'Entorn de Proves

Instal·lació de Dependències

Per realitzar proves d'integració en Node.js, utilitzarem Mocha com a framework de proves i Chai com a biblioteca d'assertions. També utilitzarem Supertest per fer peticions HTTP a la nostra aplicació.

npm install --save-dev mocha chai supertest

Estructura del Projecte

Organitza el teu projecte de manera que les proves estiguin separades del codi de producció. Una estructura típica podria ser:

/project-root
  /src
    /controllers
    /models
    /routes
    app.js
  /test
    /integration
      example.test.js
  package.json

Exemple Pràctic: Proves d'Integració d'una API

  1. Crear una API Simple

Primer, crearem una API simple amb Express que tingui un endpoint /users que retorni una llista d'usuaris.

app.js:

const express = require('express');
const app = express();

app.get('/users', (req, res) => {
  res.status(200).json([{ id: 1, name: 'John Doe' }]);
});

module.exports = app;

server.js:

const app = require('./app');
const port = process.env.PORT || 3000;

app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

  1. Escriure Proves d'Integració

Ara, escriurem una prova d'integració per assegurar-nos que l'endpoint /users funciona correctament.

test/integration/example.test.js:

const request = require('supertest');
const app = require('../../src/app');
const { expect } = require('chai');

describe('GET /users', () => {
  it('should return a list of users', (done) => {
    request(app)
      .get('/users')
      .expect('Content-Type', /json/)
      .expect(200)
      .end((err, res) => {
        if (err) return done(err);
        expect(res.body).to.be.an('array');
        expect(res.body[0]).to.have.property('id');
        expect(res.body[0]).to.have.property('name');
        done();
      });
  });
});

  1. 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

Consells i Errors Comuns

Consells

  • Utilitza Bases de Dades de Proves: Si la teva aplicació interactua amb una base de dades, utilitza una base de dades de proves per evitar modificar dades reals.
  • Mocking i Stubbing: Utilitza eines com sinon per fer mock o stub de dependències externes.
  • Aïllament de Proves: Assegura't que les proves no depenguin unes de les altres i que es puguin executar en qualsevol ordre.

Errors Comuns

  • No Netejar l'Estat: No netejar l'estat de la base de dades o altres recursos entre proves pot causar resultats inconsistents.
  • Proves Massa Dependents: Les proves que depenen massa de l'estat inicial poden fallar si aquest estat canvia.
  • No Verificar Tot: Assegura't de verificar totes les parts importants de la resposta, no només el codi d'estat.

Conclusió

Les proves d'integració són essencials per assegurar-se que els diferents components de la teva aplicació funcionen correctament junts. Utilitzant eines com Mocha, Chai i Supertest, pots escriure proves efectives que ajudin a mantenir la qualitat del teu programari. Recorda seguir les millors pràctiques i evitar errors comuns per obtenir els millors resultats.

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