Testes em TypeScript: visão geral de frameworks e ferramentas modernas
TypeScript é um superconjunto estritamente tipado do JavaScript, amplamente utilizado no desenvolvimento web moderno. No entanto, a tipagem por si só não garante a ausência de erros lógicos. Para garantir a qualidade do código, são necessários testes adequados. Neste artigo, abordaremos os principais frameworks e ferramentas para testar aplicações TypeScript, suas características e exemplos de uso.
Por que testar código TypeScript?
Apesar de o TypeScript verificar tipos em tempo de compilação, ele não protege contra erros de tempo de execução, lógica de negócios incorreta ou regressões. Os testes ajudam a:
- Detectar erros antes de irem para produção;
- Documentar o comportamento de funções e módulos;
- Simplificar a refatoração e a manutenção do código;
- Acelerar o processo de desenvolvimento através da automação de verificações.
Frameworks populares para testar TypeScript
1. Jest — a escolha universal
Jest é o framework mais popular, criado pelo Facebook. Ele suporta TypeScript "pronto para uso" através do pacote ts-jest ou da configuração do Babel. Jest inclui test runner, biblioteca de asserções, mocking e relatórios de cobertura.
Instalação e configuração:
npm install --save-dev jest ts-jest @types/jestnpx ts-jest config:initExemplo de teste unitário para uma função de soma:
// sum.tsexport function sum(a: number, b: number): number { return a + b;}
// sum.test.tsimport { sum } from './sum';
describe('sum function', () => { test('adds 1 + 2 to equal 3', () => { expect(sum(1, 2)).toBe(3); });
test('adds negative numbers', () => { expect(sum(-1, -2)).toBe(-3); });});2. Vitest — alternativa rápida para projetos Vite
Vitest é um framework moderno que utiliza o Vite para build. Ele é compatível com a API do Jest, mas funciona significativamente mais rápido devido ao suporte nativo a módulos ES e HMR. É ideal para projetos em Vue, React ou Svelte.
Exemplo de configuração:
// vitest.config.tsimport { defineConfig } from 'vitest/config';
export default defineConfig({ test: { globals: true, environment: 'node', },});Teste usando describe/it:
import { describe, it, expect } from 'vitest';
function multiply(a: number, b: number): number { return a * b;}
describe('multiply', () => { it('should multiply two numbers', () => { expect(multiply(3, 4)).toBe(12); });});3. Mocha + Chai — a flexibilidade clássica
Mocha é um test runner flexível, frequentemente usado em conjunto com a biblioteca de asserções Chai. Para TypeScript, é necessário instalar adicionalmente o ts-node e o @types/mocha. O Mocha oferece diversos plugins e personalizações.
Exemplo:
import { expect } from 'chai';
function greet(name: string): string { return `Hello, ${name}!`;}
describe('greet', () => { it('should return a greeting', () => { expect(greet('Alex')).to.equal('Hello, Alex!'); });});Ferramentas para testes end-to-end (E2E)
4. Playwright — ferramenta E2E moderna
Playwright, da Microsoft, suporta TypeScript nativamente e permite testar Chromium, Firefox e WebKit. Ele é capaz de lidar com requisições de rede, emular dispositivos móveis e tirar screenshots.
Instalação:
npm init playwright@latestExemplo de teste para verificar o título de uma página:
import { test, expect } from '@playwright/te Também na biblioteca
NestJS para TypeScript: guia completo com exemplos
CsvHelper para C# (.NET): guia completo com exemplos práticos
Cliente OAuth para Kotlin: integração com provedores via ktor-client e kotlinx-serialization
Swagger-PHP para PHP: guia completo com exemplos