Leodario.com

Leodario.com – Tudo sobre Tecnologia

Aula 72 – API JavaScript, Node.js e Express – Jest Setup – Testing framework configuration

Imagem destacada da aula de API

Introdução (3 min)

Imagine um inspetor de qualidade em uma fábrica de carros. Ele não espera o carro estar pronto para começar os testes. Ele verifica cada peça, cada etapa da montagem, garantindo a qualidade final do produto. Configurar o Jest, nosso framework de testes para APIs, é como preparar a linha de produção e as ferramentas do inspetor. É indispensável para APIs modernas, garantindo código robusto e confiável.

Nesta aula, você dominará a configuração do Jest para seus projetos Node.js/Express, desde a instalação até a execução dos primeiros testes. Você entenderá seu papel crucial no ecossistema de desenvolvimento backend.

Conceito Fundamental (7 min)

O Jest é um framework de testes JavaScript focado na simplicidade. Ele possibilita testar unidades individuais do seu código (funções, módulos) de forma isolada, assegurando seu funcionamento correto. Imagine testá-lo como blocos de Lego, garantindo que cada peça encaixe perfeitamente antes de construir o castelo inteiro.

A terminologia inclui test suites (conjuntos de testes), test cases (casos de teste individuais) e assertions (afirmações sobre o comportamento esperado do código). Em produção, o Jest é vital para prevenir bugs, acelerar o desenvolvimento e facilitar a manutenção do código. Ele se integra perfeitamente com outras tecnologias como Express.js, React e bancos de dados.

Vantagens: Facilidade de uso, execução rápida, ampla documentação. Desvantagens: Pode ser complexo para cenários de teste muito específicos.

Implementação Prática (10 min)

Vamos configurar o Jest em um projeto Express.js. Primeiro, instale o Jest e o supertest (para simular requisições HTTP):

npm install --save-dev jest supertest

Modifique o package.json, adicionando o script de teste:

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

Crie um arquivo server.js com uma rota simples:

// server.js
const express = require('express');
const app = express();
const port = 3000;

app.get('/hello', (req, res) => { res.send('Olá, Mundo!'); });

const server = app.listen(port, () => { console.log(Servidor rodando na porta ${port}); });

module.exports = server; // Exportando o server para os testes

Agora, crie o arquivo de teste server.test.js:

// server.test.js
const request = require('supertest');
const server = require('./server'); // Importando o server

afterAll(() => { server.close(); // Fecha o servidor após os testes });

describe('Teste de Rota /hello', () => { it('Deve retornar "Olá, Mundo!" com status 200', async () => { const response = await request(server).get('/hello'); expect(response.status).toBe(200); expect(response.text).toBe('Olá, Mundo!'); }); });

Execute o teste com npm test.

Exercício Hands-On (5 min)

Crie uma nova rota /ola que retorna “Olá, Jest!”. Escreva um teste para verificar se a rota retorna o texto correto e o status code 200.

Solução:

// server.js (adicione a nova rota)
app.get('/ola', (req, res) => {
  res.send('Olá, Jest!');
});

// server.test.js (adicione o novo teste) describe('Teste de Rota /ola', () => { it('Deve retornar "Olá, Jest!" com status 200', async () => { const response = await request(server).get('/ola'); expect(response.status).toBe(200); expect(response.text).toBe('Olá, Jest!'); }); });

Para testar, execute novamente npm test.

Próximos passos: Explore matchers do Jest como toContain, toEqual, toBeGreaterThan para testes mais complexos. Aprenda a simular bancos de dados para testes de integração.

🚀 Pronto para a próxima aula?

Continue sua jornada no desenvolvimento de APIs e domine Node.js & Express!

📚 Ver todas as aulas