Testes em JavaScript (Node.js): frameworks e ferramentas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Testes em JavaScript (Node.js): frameworks e ferramentas



Testes de qualidade são uma parte essencial do desenvolvimento em Node.js. Eles permitem identificar erros em estágios iniciais, simplificam a refatoração e aumentam a confiabilidade das aplicações. No ecossistema JavaScript, existem diversos frameworks e utilitários para testes. Neste artigo, vamos explorar as principais ferramentas, suas funcionalidades e fornecer exemplos práticos.



1. Principais tipos de testes

Antes de escolher uma ferramenta, é importante entender quais tipos de testes você irá escrever:

  • Testes Unitários (Unit) — verificam funções ou módulos individuais de forma isolada.
  • Testes de Integração — verificam a interação entre vários módulos, banco de dados ou APIs externas.
  • Testes End-to-End (E2E) — simulam ações do usuário no navegador ou na aplicação completa.


2. Jest — framework universal do Facebook

Jest é o framework mais popular para testes em JavaScript. Ele inclui tudo o que é necessário: test runner, biblioteca de asserções (assertions), mocks e suporte integrado para cobertura de código.



Instalação:

npm install --save-dev jest


Exemplo de um teste unitário simples para uma função de soma:

// sum.jsfunction sum(a, b) {  return a + b;}module.exports = sum;

// sum.test.jsconst sum = require('./sum');

test('soma 1 + 2 é igual a 3', () => { expect(sum(1, 2)).toBe(3);});


Execução dos testes:

npx jest


Vantagens do Jest:

  • Configuração zero para projetos em React e Node.
  • Execução automática em modo watch.
  • Mocks e spies integrados.
  • Suporte para código assíncrono (async/await, callbacks).


3. Mocha + Chai — combinação flexível

Mocha é um test runner flexível que não impõe uma biblioteca de asserções. Geralmente é usado com Chai — uma biblioteca com sintaxe clara (should, expect, assert).



Instalação:

npm install --save-dev mocha chai


Exemplo de teste com Chai:

// calculator.jsfunction divide(a, b) {  if (b === 0) throw new Error('Division by zero');  return a / b;}module.exports = { divide };

// test.jsconst { expect } = require('chai');const { divide } = require('./calculator');

describe('Calculator', function() { it('should divide two numbers', function() { expect(divide(10, 2)).to.equal(5); });

it('should throw error when dividing by zero', function() { expect(() => divide(10, 0)).to.throw('Division by zero'); });});


Execução:

npx mocha test.js


Mocha é especialmente útil quando é necessário um ajuste fino nos relatórios e integração com outras ferramentas.



4. Supertest — teste de servidores HTTP

Supertest é uma biblioteca para testes de integração em servidores Express (e outros). Ela permite enviar requisições HTTP e verificar as respostas.



Instalação:

npm install --save-dev supertest


Exemplo de teste para uma aplicação Express:

// app.jsconst express = require('express');const app = express();app.get('/hello', (req, res) => res.json({ message: 'Hello World' }));module.exports = app;

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

describe('GET /hello', function() { it('responds with json', function(done) { request(app) .get('/hello') .expect('Content-Type', /json/) .expect(200) .then(response => { expect(response.body.message).toBe('Hello World'); done(); }); });});


Supertest funciona muito bem combinado com Jest ou Mocha.

Recommendations