Les proves d'integració són una part essencial del desenvolupament de qualsevol aplicació, incloent-hi les que utilitzen GraphQL. Aquest tipus de proves asseguren que els diferents components del sistema funcionen correctament quan es combinen. En aquest tema, aprendrem com configurar i executar proves d'integració per a un servidor GraphQL.

Objectius del tema

  • Entendre què són les proves d'integració i per què són importants.
  • Aprendre a configurar un entorn de proves d'integració per a un servidor GraphQL.
  • Escriure i executar proves d'integració utilitzant eines populars com Jest i Apollo Server Testing.

Què són les proves d'integració?

Les proves d'integració verifiquen que diferents mòduls o serveis d'una aplicació funcionen correctament quan es combinen. A diferència de les proves unitàries, que aïllen i proven components individuals, les proves d'integració se centren en la interacció entre aquests components.

Importància de les proves d'integració

  • Detecció de problemes d'interacció: Asseguren que els components funcionen correctament quan es combinen.
  • Validació de fluxos de treball complets: Verifiquen que els fluxos de treball complets de l'aplicació funcionen com s'espera.
  • Reducció de riscos: Minimitzen el risc de problemes en producció en detectar errors abans del desplegament.

Configuració de l'entorn de proves d'integració

Requisits previs

  • Node.js i npm instal·lats.
  • Un servidor GraphQL configurat (per exemple, utilitzant Apollo Server).
  • Eines de proves com Jest i Apollo Server Testing.

Instal·lació de dependències

Primer, instal·lem les dependències necessàries:

npm install --save-dev jest apollo-server-testing

Configuració de Jest

Afegim una configuració bàsica de Jest al nostre projecte. Creem un fitxer jest.config.js a l'arrel del projecte:

module.exports = {
  testEnvironment: 'node',
  verbose: true,
};

Escriure proves d'integració

Exemple de servidor GraphQL

Suposem que tenim un servidor GraphQL senzill amb el següent esquema i resolvers:

const { ApolloServer, gql } = require('apollo-server');

const typeDefs = gql`
  type Query {
    hello: String
  }
`;

const resolvers = {
  Query: {
    hello: () => 'Hello, world!',
  },
};

const server = new ApolloServer({ typeDefs, resolvers });

module.exports = server;

Prova d'integració amb Jest i Apollo Server Testing

Creem un fitxer de prova integration.test.js a la carpeta tests:

const { createTestClient } = require('apollo-server-testing');
const server = require('../server'); // Assegura't que el camí sigui correcte

const { query } = createTestClient(server);

describe('GraphQL Integration Tests', () => {
  it('should return hello world', async () => {
    const HELLO_QUERY = `
      query {
        hello
      }
    `;

    const res = await query({ query: HELLO_QUERY });
    expect(res.data.hello).toBe('Hello, world!');
  });
});

Explicació del codi

  • createTestClient: Aquesta funció de apollo-server-testing crea un client de prova per al nostre servidor Apollo.
  • query: Utilitzem el client de prova per executar una consulta GraphQL.
  • HELLO_QUERY: Definim la consulta GraphQL que volem provar.
  • expect: Utilitzem Jest per verificar que la resposta de la consulta és la que esperem.

Executar les proves

Per executar les proves, simplement utilitzem el comandament de Jest:

npx jest

Si tot està configurat correctament, hauríem de veure que la prova passa amb èxit.

Errors comuns i consells

Errors comuns

  • Configuració incorrecta de Jest: Assegura't que el fitxer jest.config.js està configurat correctament.
  • Camins incorrectes: Verifica que els camins als fitxers són correctes.
  • Dependències no instal·lades: Assegura't que totes les dependències necessàries estan instal·lades.

Consells

  • Utilitza mocks per a dependències externes: Si el teu servidor GraphQL depèn de serveis externs, considera utilitzar mocks per a aquests serveis durant les proves.
  • Prova diferents escenaris: No et limitis a provar els casos feliços. Prova també escenaris d'error i casos límit.

Resum

En aquest tema, hem après què són les proves d'integració i per què són importants. Hem configurat un entorn de proves d'integració per a un servidor GraphQL utilitzant Jest i Apollo Server Testing, i hem escrit i executat una prova d'integració bàsica. Les proves d'integració són una eina poderosa per assegurar que els diferents components de la teva aplicació funcionen correctament quan es combinen, ajudant a detectar problemes abans que arribin a producció.

En el següent tema, explorarem la integració contínua i com automatitzar les proves i el desplegament del nostre servidor GraphQL.

© Copyright 2024. Tots els drets reservats