Seu carrinho está vazio no momento!

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!