Les proves de codi són una part essencial 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 com escriure i executar proves per a codi TypeScript utilitzant eines populars com Jest i Mocha.

Continguts

  1. Introducció a les Proves de Codi
  2. Configuració de l'Entorn de Proves
  3. Escriptura de Proves amb Jest
  4. Escriptura de Proves amb Mocha
  5. Proves de Tipus amb ts-jest
  6. Exercicis Pràctics

  1. Introducció a les Proves de Codi

Les proves de codi es poden classificar en diverses categories:

  • Proves Unitàries: Verifiquen la funcionalitat d'unitats individuals de codi, com ara funcions o mètodes.
  • Proves d'Integració: Verifiquen la interacció entre diferents unitats de codi.
  • Proves de Sistema: Verifiquen el sistema complet en un entorn que simula la producció.

  1. Configuració de l'Entorn de Proves

Instal·lació de Jest

Jest és un marc de proves popular per a JavaScript i TypeScript. Per instal·lar-lo, executa les següents comandes:

npm install --save-dev jest @types/jest ts-jest

Configuració de Jest

Crea un fitxer de configuració jest.config.js a l'arrel del teu projecte:

module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
  testMatch: ['**/__tests__/**/*.ts', '**/?(*.)+(spec|test).ts'],
};

  1. Escriptura de Proves amb Jest

Exemple de Prova Unitària

Crea un fitxer sum.ts amb la següent funció:

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

Ara, crea un fitxer de prova sum.test.ts:

import { sum } from './sum';

test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});

Executar les Proves

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

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

Després, executa:

npm test

  1. Escriptura de Proves amb Mocha

Instal·lació de Mocha i Chai

Mocha és un altre marc de proves popular, sovint utilitzat amb Chai per a les assercions. Per instal·lar-los, executa:

npm install --save-dev mocha chai @types/mocha @types/chai ts-node

Configuració de Mocha

Crea un fitxer de configuració mocha.opts a la carpeta test:

--require ts-node/register
--require source-map-support/register
--recursive

Exemple de Prova Unitària amb Mocha

Crea un fitxer sum.ts amb la mateixa funció:

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

Ara, crea un fitxer de prova sum.test.ts:

import { expect } from 'chai';
import { sum } from './sum';

describe('sum function', () => {
  it('should add 1 + 2 to equal 3', () => {
    expect(sum(1, 2)).to.equal(3);
  });
});

Executar les Proves

Afegeix el següent script al teu package.json:

"scripts": {
  "test": "mocha --require ts-node/register 'test/**/*.ts'"
}

Després, executa:

npm test

  1. Proves de Tipus amb ts-jest

ts-jest és un preconfigurador per a Jest que permet utilitzar TypeScript directament en les proves. Ja hem configurat ts-jest en la secció anterior, així que només cal escriure les proves com ho faríem normalment amb Jest.

  1. Exercicis Pràctics

Exercici 1: Prova d'una Funció de Multiplicació

  1. Crea una funció multiply que multipliqui dos nombres.
  2. Escriu una prova unitària per a la funció multiply utilitzant Jest.

Solució

multiply.ts:

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

multiply.test.ts:

import { multiply } from './multiply';

test('multiplies 2 * 3 to equal 6', () => {
  expect(multiply(2, 3)).toBe(6);
});

Exercici 2: Prova d'una Funció de Divisió amb Mocha

  1. Crea una funció divide que divideixi dos nombres.
  2. Escriu una prova unitària per a la funció divide utilitzant Mocha i Chai.

Solució

divide.ts:

export function divide(a: number, b: number): number {
  if (b === 0) {
    throw new Error('Cannot divide by zero');
  }
  return a / b;
}

divide.test.ts:

import { expect } from 'chai';
import { divide } from './divide';

describe('divide function', () => {
  it('should divide 6 by 3 to equal 2', () => {
    expect(divide(6, 3)).to.equal(2);
  });

  it('should throw an error when dividing by zero', () => {
    expect(() => divide(6, 0)).to.throw('Cannot divide by zero');
  });
});

Conclusió

En aquesta secció, hem après com configurar i escriure proves per a codi TypeScript utilitzant Jest i Mocha. Les proves de codi són crucials per assegurar la qualitat del programari i detectar errors de manera primerenca. Amb les eines i exemples proporcionats, ara estàs preparat per començar a escriure les teves pròpies proves i millorar la robustesa del teu codi TypeScript.

© Copyright 2024. Tots els drets reservats