ts-jest para TypeScript: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é ts-jest e para que serve?

\n\n

ts-jest é um pré-processador TypeScript para o popular framework de testes Jest. Ele permite executar testes escritos em TypeScript sem a necessidade de compilação prévia para JavaScript. A biblioteca converte automaticamente o código TypeScript em JavaScript durante a execução dos testes, usando o compilador TypeScript integrado.

\n\n

O objetivo principal do ts-jest é fornecer uma integração perfeita do TypeScript com o Jest. Sem ele, seria necessário configurar manualmente a compilação do TypeScript antes de cada execução de testes ou usar ferramentas adicionais como ts-node. O ts-jest torna esse processo transparente e automático.

\n\n

Principais vantagens de usar ts-jest:

\n
    \n
  • Compilação automática — arquivos TypeScript são compilados "em tempo real" durante os testes
  • \n
  • Suporte completo ao TypeScript — todos os recursos da linguagem (decoradores, genéricos, tipos) funcionam corretamente
  • \n
  • Source maps — em caso de erros, você vê o código TypeScript original, não o JavaScript compilado
  • \n
  • Desempenho — ts-jest armazena em cache os resultados da compilação, acelerando execuções repetidas
  • \n
  • Flexibilidade — é possível configurar os parâmetros do compilador TypeScript através da configuração do Jest
  • \n
\n\n

Instalação do ts-jest

\n\n

Para trabalhar com ts-jest, você precisará do Node.js (versão 14 ou superior) e de um gerenciador de pacotes npm ou yarn. A instalação é feita com um único comando:

\n\n
npm install --save-dev jest typescript ts-jest @types/jest
\n\n

Ou via yarn:

\n\n
yarn add --dev jest typescript ts-jest @types/jest
\n\n

Explicação dos pacotes:

\n
    \n
  • jest — o próprio framework de testes
  • \n
  • typescript — o compilador TypeScript
  • \n
  • ts-jest — o pré-processador para integração
  • \n
  • @types/jest — tipos TypeScript para Jest (para autocompletar e verificação de tipos)
  • \n
\n\n

Após a instalação, é necessário criar ou atualizar o arquivo jest.config.js (ou jest.config.ts):

\n\n
// jest.config.js\nmodule.exports = {\n  preset: 'ts-jest',\n  testEnvironment: 'node',\n  roots: ['<rootDir>/src'],\n  testMatch: ['**/__tests__/**/*.ts?(x)', '**/?(*.)+(spec|test).ts?(x)'],\n  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node']\n};
\n\n

Certifique-se também de que os parâmetros corretos estão configurados no tsconfig.json:

\n\n
{\n  "compilerOptions": {\n    "target": "ES2020",\n    "module": "commonjs",\n    "strict": true,\n    "esModuleInterop": true,\n    "skipLibCheck": true,\n    "forceConsistentCasingInFileNames": true,\n    "outDir": "./dist",\n    "rootDir": "./src",\n    "declaration": true,\n    "sourceMap": true\n  },\n  "include": ["src/**/*"],\n  "exclude": ["node_modules", "dist", "**/*.test.ts"]\n}
\n\n

Início rápido com exemplo de código

\n\n

Vamos criar uma função simples e um teste para ela. Estrutura do projeto:

\n\n
my-project/\n├── src/\n│   ├── math.ts\n│   └── __tests__/\n│       └── math.test.ts\n├── jest.config.js\n├── tsconfig.json\n└── package.json
\n\n

Arquivo: src/math.ts

\n\n
export function add(a: number, b: number): number {\n  return a + b;\n}\n\nexport function subtract(a: number, b: number): number {\n  return a - b;\n}\n\nexport function multiply(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('Division by zero');\n  }\n  return a / b;\n}
\n\n

Arquivo: src/__tests__/math.test.ts

\n\n
import { add, subtract, multiply, divide } from '../math';\n\ndescribe('Math functions', () => {\n  test('adds 1 + 2 to equal 3', () => {\n    expect(add(1, 2)).toBe(3)                    

Recommendations