Seu carrinho está vazio no momento!

Introdução (3 min)
Imagine um carro. Você não o montaria de uma vez só, certo? Primeiro testa cada peça individualmente: motor, freios, transmissão. Testar funções isoladas em APIs é a mesma coisa. É garantir que cada “peça” do seu software funcione perfeitamente antes de integrá-la ao todo.
Este processo, unit testing, é fundamental para APIs modernas, garantindo confiabilidade e facilitando a manutenção. Nesta aula, você aprenderá a construir e executar testes unitários para suas funções em Node.js/Express, seguindo as melhores práticas da indústria.
No contexto Node.js/Express, unit tests validam a lógica de negócio isolada em suas rotas, middlewares e outras funções, tornando seu código mais robusto e menos propenso a erros.
Conceito Fundamental (7 min)
Unit testing é a prática de testar unidades individuais de código, como funções, isoladamente. Isso garante que cada componente funcione conforme o esperado antes de ser integrado a outros. A terminologia essencial inclui test runner (framework que executa os testes – usaremos Jest), assertions (comparações entre o resultado esperado e o obtido) e test suites (grupos de testes relacionados).
Em produção, imagine uma API para processar pagamentos. Testes unitários validariam funções individuais, como cálculo de juros, validação de cartão de crédito e registro da transação, independentemente da integração com gateways de pagamento reais.
Unit tests integram-se com ferramentas de CI/CD, automatizando a execução dos testes a cada alteração no código. A principal vantagem é a detecção precoce de erros, simplificando a correção. A desvantagem pode ser o tempo inicial de desenvolvimento dos testes.
Implementação Prática (10 min)
Vamos criar uma função simples e testá-la com Jest. Instale Jest com: npm install --save-dev jest.
// utils.js
function somar(a, b) {
// Validação robusta dos parâmetros de entrada
if (typeof a !== 'number' || typeof b !== 'number') {
throw new Error('Os parâmetros devem ser números.'); // Error handling
}
return a + b;
}
module.exports = { somar };
// utils.test.js
const { somar } = require('./utils');
describe('Testes para a função somar', () => {
it('Deve somar dois números corretamente', () => {
expect(somar(2, 3)).toBe(5);
});
it('Deve lançar um erro se os parâmetros não forem números', () => {
expect(() => somar('a', 2)).toThrow('Os parâmetros devem ser números.');
});
it('Deve retornar zero se um dos números for zero', () => {
expect(somar(0,5)).toBe(5);
})
});
Para executar o teste, adicione "test": "jest" no scripts do seu package.json e execute npm test. Observe a saída do Jest com os resultados dos testes. Essa configuração é compatível com HostGator Plano M.
Exercício Hands-On (5 min)
Crie uma função subtrair(a, b) que subtrai b de a. Implemente testes unitários para garantir que ela funcione corretamente com números positivos, negativos e zero. Considere também casos de erro, como parâmetros não numéricos.
Solução:
// utils.js
function subtrair(a, b) {
if (typeof a !== 'number' || typeof b !== 'number') {
throw new Error('Os parâmetros devem ser números.');
}
return a - b;
}
module.exports = { somar, subtrair };
// utils.test.js (adicione os testes abaixo aos existentes)
it('Deve subtrair dois números corretamente', () => {
expect(subtrair(5, 2)).toBe(3);
});
it('Deve lidar com números negativos', () => {
expect(subtrair(-5, 2)).toBe(-7);
});
it('Deve retornar zero se os números forem iguais', () => {
expect(subtrair(5,5)).toBe(0);
});
Execute npm test para validar a solução. Em caso de erros, verifique a sintaxe do seu código e as mensagens de erro do Jest. Como próximo passo, explore outras bibliotecas de asserções como Chai e frameworks de teste como Mocha.
🚀 Pronto para a próxima aula?
Continue sua jornada no desenvolvimento de APIs e domine Node.js & Express!