Por que testar TypeScript não é assustador, mas sim vantajoso
\n\nVocê escreveu uma função legal em TypeScript, executou o projeto — tudo funciona. Uma semana depois, adicionou um novo recurso, e a lógica antiga quebrou. Familiar? Se sim, você precisa urgentemente se familiarizar com testes. E não tenha medo: testes não são uma obrigação chata, mas sim seu "detector de bugs" pessoal, que funciona 24 horas por dia, 7 dias por semana.
\n\nNeste artigo, vamos abordar por onde começar a testar TypeScript para iniciantes. Você aprenderá como configurar o ambiente, escrever seu primeiro teste unitário e não se confundir com os tipos. Sem enrolação — apenas prática e exemplos de código reais.
\n\nPor que testar TypeScript se ele já é seguro?
\n\nO TypeScript realmente detecta muitos erros em tempo de compilação: tipos incorretos, campos ausentes, argumentos errados. Mas a tipagem estática não salva de erros lógicos. Sua função pode compilar perfeitamente, mas produzir um resultado incorreto. Por exemplo:
\n\nfunction sum(a: number, b: number): number {\n return a - b; // Erro! Em vez de soma — subtração\n}\n\nO TypeScript não reclamará — os tipos estão corretos. Mas um teste unitário mostrará imediatamente que sum(2, 2) não é igual a 4. Portanto, testar TypeScript não é um capricho, mas uma necessidade para qualquer projeto sério.
Passo 1. Escolhendo a ferramenta: por que Jest é o melhor amigo do iniciante
\n\nExistem vários frameworks populares para testes no mercado: Mocha, Jasmine, Vitest, Jest. Para iniciantes, recomendo fortemente o Jest. Por quê?
\n\n- \n
- Funciona "pronto para uso" — não precisa de configuração demorada. \n
- Mecanismo de mock integrado e cobertura de código. \n
- Excelente suporte para TypeScript através do
ts-jest. \n - Mensagens de erro claras. \n
Vamos instalar o Jest no seu projeto. Suponho que você já tenha o TypeScript. Se não, crie um novo projeto:
\n\nmkdir my-ts-project\ncd my-ts-project\nnpm init -y\nnpm install typescript jest @types/jest ts-jest --save-dev\n\nAgora, crie o arquivo jest.config.js na raiz do projeto:
module.exports = {\n preset: 'ts-jest',\n testEnvironment: 'node',\n roots: ['/src'],\n testMatch: ['**/__tests__/**/*.ts', '**/?(*.)+(spec|test).ts'],\n}; \n\nE adicione o script no package.json:
"scripts": {\n "test": "jest",\n "test:watch": "jest --watch"\n}\n\nPronto! Agora você pode escrever testes.
\n\nPasso 2. Escrevendo o primeiro teste em TypeScript
\n\nCrie uma função simples no arquivo src/math.ts:
export function add(a: number, b: number): number {\n return a + b;\n}\n\nexport function divide(a: number, b: number): number {\n if (b === 0) {\n throw new Error('Divisão por zero não é permitida');\n }\n return a / b;\n}\n\nAgora, escreva um teste para ela. Crie a pasta src/__tests__/ e o arquivo math.test.ts:
import { add, divide } from '../math';\n\ndescribe('Funções matemáticas', () => {\n test('soma dois números corretamente', () => {\n expect(add(2, 3)).toBe(5);\n expect(add(-1, 1)).toBe(0);\n expect(add(0, 0)).toBe(0);\n });\n\n test('divide dois números', () => {\n expect(divide(10, 2)).toBe(5);\n expect(divide(9, 3)).toBe(3);\n });\n\n test('lança erro ao dividir por zero', () => {\n expect(() => divide(5, 0)).toThrow('Divisão por zero não é permitida');\n });\n});\n\nExecute npm test e veja o relatório verde. Parabéns — você acabou de escrever seus primeiros testes unitários em TypeScript!
O que aconteceu aqui?
\n\n- \n
describe— agrupa testes em um grupo lógico. \n testouit— um caso de teste individual. \n expect— uma asserção que verifica