En aquest tema, aprendrem com assegurar-nos que la nostra API RESTful funcioni correctament mitjançant proves i validació. Les proves són una part essencial del desenvolupament de programari, ja que ens permeten detectar errors i assegurar-nos que la nostra API compleix amb els requisits especificats.

Objectius del Tema

  1. Entendre la importància de les proves en el desenvolupament d'APIs.
  2. Aprendre a escriure proves unitàries per a les nostres rutes i funcionalitats.
  3. Conèixer les eines i frameworks més utilitzats per a les proves d'APIs.
  4. Implementar proves d'integració per assegurar-nos que els components de l'API funcionen correctament junts.
  5. Validar les dades d'entrada i sortida per garantir la integritat de la informació.

  1. Importància de les Proves en el Desenvolupament d'APIs

Les proves són crucials per diverses raons:

  • Detecció d'Errors: Ens ajuden a identificar i corregir errors abans que l'API sigui utilitzada en producció.
  • Qualitat del Codi: Milloren la qualitat del codi assegurant que cada part de l'API funcioni com s'espera.
  • Mantenibilitat: Faciliten el manteniment del codi, ja que les proves poden detectar errors introduïts durant els canvis o millores.
  • Confiança: Proporcionen confiança als desenvolupadors i usuaris que l'API és fiable i robusta.

  1. Proves Unitàries

Les proves unitàries són proves que verifiquen el funcionament de components individuals de l'API, com ara funcions o mètodes. A continuació, es mostra un exemple de prova unitària utilitzant el framework de proves Jest amb Node.js i Express.

Exemple de Prova Unitària

Instal·lació de Jest

npm install --save-dev jest

Configuració de Jest

Afegiu el següent al vostre package.json:

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

Exemple de Prova Unitària per a una Ruta

Suposem que tenim una ruta que retorna una llista d'usuaris:

// users.js
const express = require('express');
const router = express.Router();

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

module.exports = router;

Ara, escrivim una prova unitària per a aquesta ruta:

// users.test.js
const request = require('supertest');
const express = require('express');
const usersRouter = require('./users');

const app = express();
app.use('/api', usersRouter);

describe('GET /api/users', () => {
  it('should return a list of users', async () => {
    const res = await request(app).get('/api/users');
    expect(res.statusCode).toEqual(200);
    expect(res.body).toEqual([{ id: 1, name: 'John Doe' }]);
  });
});

Per executar les proves, utilitzeu:

npm test

  1. Eines i Frameworks per a Proves d'APIs

Hi ha diverses eines i frameworks que poden ajudar-vos a provar les vostres APIs:

  • Jest: Un framework de proves JavaScript amb una API senzilla i funcionalitats avançades.
  • Mocha: Un altre framework de proves JavaScript popular, sovint utilitzat amb Chai per a les assercions.
  • Supertest: Una llibreria per a proves HTTP que es pot utilitzar amb qualsevol framework de proves.
  • Postman: Una eina GUI per a proves d'APIs que permet crear col·leccions de proves i automatitzar-les.

  1. Proves d'Integració

Les proves d'integració verifiquen que diferents components de l'API funcionen correctament junts. A continuació, es mostra un exemple de prova d'integració utilitzant Mocha i Chai.

Exemple de Prova d'Integració

Instal·lació de Mocha i Chai

npm install --save-dev mocha chai

Configuració de Mocha

Afegiu el següent al vostre package.json:

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

Exemple de Prova d'Integració

// integration.test.js
const chai = require('chai');
const chaiHttp = require('chai-http');
const app = require('./app'); // La vostra aplicació Express

chai.use(chaiHttp);
const expect = chai.expect;

describe('API Integration Tests', () => {
  it('should return a list of users', (done) => {
    chai.request(app)
      .get('/api/users')
      .end((err, res) => {
        expect(res).to.have.status(200);
        expect(res.body).to.be.an('array');
        done();
      });
  });
});

Per executar les proves, utilitzeu:

npm test

  1. Validació de Dades

La validació de dades és essencial per assegurar-nos que les dades d'entrada i sortida compleixen amb els requisits esperats. Això ajuda a prevenir errors i millorar la seguretat de l'API.

Exemple de Validació amb Joi

Instal·lació de Joi

npm install joi

Exemple de Validació

// validation.js
const Joi = require('joi');

const userSchema = Joi.object({
  name: Joi.string().min(3).required(),
  email: Joi.string().email().required()
});

module.exports = userSchema;

Utilització de la Validació en una Ruta

// users.js
const express = require('express');
const router = express.Router();
const userSchema = require('./validation');

router.post('/users', (req, res) => {
  const { error } = userSchema.validate(req.body);
  if (error) {
    return res.status(400).json({ error: error.details[0].message });
  }
  // Processar la petició si les dades són vàlides
  res.status(201).json({ message: 'User created successfully' });
});

module.exports = router;

Resum

En aquesta secció, hem après la importància de les proves en el desenvolupament d'APIs RESTful i hem vist com escriure proves unitàries i d'integració utilitzant diverses eines i frameworks. També hem après a validar les dades d'entrada i sortida per garantir la integritat de la informació. Amb aquestes habilitats, podreu assegurar-vos que la vostra API és fiable, robusta i segura.

© Copyright 2024. Tots els drets reservats