Les proves d'integració són una part crucial del procés de desenvolupament de programari. Aquest tipus de proves s'utilitzen per verificar que diferents mòduls o components d'una aplicació funcionen correctament quan es combinen. A diferència de les proves unitàries, que se centren en la funcionalitat d'unitats individuals, les proves d'integració asseguren que els components interactuen correctament entre ells.

Objectius de les Proves d'Integració

  • Verificar la Interacció entre Mòduls: Assegurar-se que els mòduls o components funcionen correctament quan es combinen.
  • Detectar Errors d'Interfície: Identificar problemes en la comunicació entre diferents parts del sistema.
  • Validar el Flux de Dades: Comprovar que les dades es transmeten correctament entre mòduls.

Configuració de l'Entorn de Proves

Abans de començar amb les proves d'integració, és important configurar l'entorn de proves adequadament. Això inclou la instal·lació de les eines necessàries i la configuració dels fitxers de prova.

Eines Recomanades

  • Jest: Una eina de proves de JavaScript que suporta proves unitàries i d'integració.
  • Supertest: Una llibreria per provar APIs HTTP.

Instal·lació de les Eines

npm install --save-dev jest supertest

Configuració de Jest

Crea un fitxer jest.config.js a l'arrel del teu projecte amb la següent configuració:

module.exports = {
  testEnvironment: 'node',
  testMatch: ['**/?(*.)+(spec|test).[jt]s?(x)'],
};

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

  1. Creació de l'API

Suposem que tenim una API senzilla que gestiona usuaris. Aquí tens un exemple de com podria ser el codi de l'API:

// app.js
const express = require('express');
const app = express();
app.use(express.json());

let users = [];

app.post('/users', (req, res) => {
  const user = req.body;
  users.push(user);
  res.status(201).send(user);
});

app.get('/users', (req, res) => {
  res.status(200).send(users);
});

module.exports = app;

  1. Creació de les Proves d'Integració

Ara, crearem les proves d'integració per a aquesta API.

// app.test.js
const request = require('supertest');
const app = require('./app');

describe('Proves d\'Integració per a l\'API d\'Usuaris', () => {
  it('hauria de crear un nou usuari', async () => {
    const newUser = { name: 'John Doe', email: '[email protected]' };
    const response = await request(app)
      .post('/users')
      .send(newUser)
      .expect(201);

    expect(response.body).toEqual(newUser);
  });

  it('hauria de obtenir tots els usuaris', async () => {
    const response = await request(app)
      .get('/users')
      .expect(200);

    expect(response.body.length).toBeGreaterThan(0);
  });
});

  1. Execució de les Proves

Per executar les proves, afegeix el següent script al teu package.json:

"scripts": {
  "test": "jest"
}

Després, executa les proves amb el següent comandament:

npm test

Errors Comuns i Consells

  • No Configurar Correctament l'Entorn de Proves: Assegura't que l'entorn de proves està configurat correctament abans d'executar les proves.
  • No Netejar l'Estat entre Proves: Utilitza beforeEach i afterEach per netejar l'estat entre proves i evitar efectes secundaris.
  • No Provar Casos Negatius: A més de provar els casos positius, assegura't de provar els casos negatius per garantir que l'API gestiona correctament els errors.

Resum

Les proves d'integració són essencials per assegurar que els diferents components d'una aplicació funcionen correctament quan es combinen. Utilitzant eines com Jest i Supertest, pots crear i executar proves d'integració de manera eficient. Recorda configurar adequadament l'entorn de proves i netejar l'estat entre proves per obtenir resultats fiables.

Amb aquest coneixement, estàs preparat per avançar cap a la següent secció del curs, on explorarem les proves de cap a cap amb Cypress.

JavaScript: De Principiant a Avançat

Mòdul 1: Introducció a JavaScript

Mòdul 2: Estructures de Control

Mòdul 3: Funcions

Mòdul 4: Objectes i Arrays

Mòdul 5: Objectes i Funcions Avançades

Mòdul 6: El Model d'Objectes del Document (DOM)

Mòdul 7: APIs del Navegador i Temes Avançats

Mòdul 8: Proves i Depuració

Mòdul 9: Rendiment i Optimització

Mòdul 10: Frameworks i Llibreries de JavaScript

Mòdul 11: Projecte Final

© Copyright 2024. Tots els drets reservats