JavaScript:
Escrevendo testes

Como fazer:

Abordagem Nativa (usando Jest)

Jest é um framework de testes popular que fornece uma API amigável para escrever testes de unidade em JavaScript. Ele requer configuração mínima e vem com recursos como funções de simulação, temporizadores e teste de snapshots.

  1. Instalação:
npm install --save-dev jest
  1. Escrevendo um teste simples:

Crie um arquivo chamado sum.test.js:

const sum = require('./sum'); // Assuma que essa função simplesmente adiciona dois números

test('soma 1 + 2 para igualar 3', () => {
  expect(sum(1, 2)).toBe(3);
});
  1. Executando o seu teste:
npx jest

Saída de Exemplo:

PASS  ./sum.test.js
✓ soma 1 + 2 para igualar 3 (5ms)

Testando Código Assíncrono

Jest facilita o teste de promessas e a sintaxe async/await:

// asyncSum.js
async function asyncSum(a, b) {
  return Promise.resolve(a + b);
}

// asyncSum.test.js
test('adição assíncrona funciona', async () => {
  await expect(asyncSum(1, 2)).resolves.toBe(3);
});

Usando Bibliotecas de Terceiros (Mocha & Chai)

Mocha é outro framework de testes popular, frequentemente usado com a biblioteca de afirmação Chai para testes mais expressivos.

  1. Instalação:
npm install --save-dev mocha chai
  1. Escrevendo um teste com Mocha e Chai:

Crie calculate.test.js:

const chai = require('chai');
const expect = chai.expect;

const calculate = require('./calculate'); // Um módulo de cálculo simples

describe('Calculate', function() {
  it('deve somar dois valores', function() {
    expect(calculate.sum(5, 2)).to.equal(7);
  });
});
  1. Executando seus testes com Mocha:

Adicione um script no seu package.json:

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

Em seguida, execute:

npm test

Saída de Exemplo:

  Calculate
    ✓ deve somar dois valores


  1 passing (8ms)

Estes exemplos ilustram a escrita básica e execução de testes em JavaScript. Adotar um framework de testes como Jest ou Mocha com Chai pode fornecer uma base sólida para testes robustos de aplicação, ajudando a assegurar que seu código funcione conforme pretendido através de atualizações e refatorações.