O que é ts-jest e para que serve?
\n\nts-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\nO 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.
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
Instalação do ts-jest
\n\nPara 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\nnpm install --save-dev jest typescript ts-jest @types/jest\n\nOu via yarn:
\n\nyarn add --dev jest typescript ts-jest @types/jest\n\nExplicaçã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
Após a instalação, é necessário criar ou atualizar o arquivo jest.config.js (ou jest.config.ts):
// 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\nCertifique-se também de que os parâmetros corretos estão configurados no tsconfig.json:
{\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\nInício rápido com exemplo de código
\n\nVamos criar uma função simples e um teste para ela. Estrutura do projeto:
\n\nmy-project/\n├── src/\n│ ├── math.ts\n│ └── __tests__/\n│ └── math.test.ts\n├── jest.config.js\n├── tsconfig.json\n└── package.json\n\nArquivo: src/math.ts
\n\nexport 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\nArquivo: src/__tests__/math.test.ts
\n\nimport { 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) Também na biblioteca
Parsing de HTML em Node.js: Principais bibliotecas e exemplos de código
Geolocalização e mapas em Go: visão geral de bibliotecas e exemplos de código
Cliente OAuth para C# (.NET): implementação de autorização através de serviços terceiros
Cliente Redis para C++: conexão, instalação e exemplos