Aparência
Testes em TypeScript: Configurando Jest e Escrevendo Testes Básicos
Realizar testes automatizados é uma prática essencial para garantir a qualidade e a robustez de seu código. Jest é uma das bibliotecas de teste mais populares para JavaScript, e ela oferece suporte completo para TypeScript. A seguir, descreveremos como configurar Jest com TypeScript e escrever alguns testes básicos.
Configurando Jest com TypeScript
Instalando Dependências:
Para começar, você precisará instalar Jest, juntamente com alguns pacotes auxiliares para integrar com TypeScript. Execute o seguinte comando para instalar as dependências necessárias:
bashnpm install --save-dev jest @types/jest ts-jest
jest
: O framework de teste principal.@types/jest
: Tipos TypeScript para Jest.ts-jest
: Um pré-processador para Jest que permite usar TypeScript.
Configurando Jest:
Crie ou edite o arquivo de configuração do Jest, geralmente chamado
jest.config.js
, na raiz do seu projeto:javascriptmodule.exports = { preset: "ts-jest", testEnvironment: "node", moduleFileExtensions: ["ts", "tsx", "js"], transform: { "^.+\\.tsx?$": "ts-jest", }, testMatch: ["**/tests/**/*.test.ts"], globals: { "ts-jest": { tsconfig: "tsconfig.json", }, }, };
preset: 'ts-jest'
: Usa o preset dots-jest
para transpilar TypeScript para JavaScript antes dos testes.testEnvironment: 'node'
: Define o ambiente de teste (pode ser 'jsdom' para testes no navegador).moduleFileExtensions
: Especifica quais extensões de arquivos o Jest deve reconhecer.transform
: Define como os arquivos TypeScript devem ser transformados usandots-jest
.testMatch
: Define o padrão de correspondência para os arquivos de teste.
Configurando o TypeScript:
Certifique-se de que seu
tsconfig.json
está configurado para testes. Adicione ou edite o arquivo para incluir as opções necessárias:json{ "compilerOptions": { "target": "ES6", "module": "commonjs", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true }, "include": ["src", "tests"] }
Escrevendo Testes Básicos
Com a configuração completa, agora podemos escrever alguns testes básicos em TypeScript.
Criando um Arquivo de Teste:
Crie um diretório chamado
tests
na raiz do seu projeto. Dentro deste diretório, crie um arquivo chamadoexample.test.ts
.Escrevendo o Teste:
Aqui está um exemplo simples de um teste que verifica se uma função
sum
funciona corretamente:typescript// src/sum.ts export const sum = (a: number, b: number): number => { return a + b; }; // tests/example.test.ts import { sum } from "../src/sum"; test("adds 1 + 2 to equal 3", () => { expect(sum(1, 2)).toBe(3); });
- src/sum.ts: Define a função
sum
que soma dois números. - tests/example.test.ts: Contém um teste que verifica se
sum(1, 2)
retorna3
.
- src/sum.ts: Define a função
Executando os Testes:
Para executar os testes, adicione um script de teste ao seu
package.json
:json"scripts": { "test": "jest" }
Agora você pode executar seus testes com o comando:
bashnpm test
Se tudo estiver configurado corretamente, você deverá ver uma saída indicando que os testes foram executados com sucesso.
Dicas para Testes em TypeScript
Cobertura de Código: Use a opção de cobertura de código do Jest para garantir que todas as partes críticas do seu código estão sendo testadas. Você pode habilitar isso com a flag
--coverage
.bashnpm test -- --coverage
Testes Assíncronos: Jest suporta testes assíncronos, permitindo testar funções que retornam promessas ou usam async/await.
typescripttest("fetches data", async () => { const data = await fetchData(); expect(data).toBeDefined(); });
Mocking: Utilize mocks para simular dependências externas, como APIs ou serviços, garantindo que seus testes sejam isolados e previsíveis.
typescriptimport axios from "axios"; jest.mock("axios"); test("fetches data from API", async () => { const mockedAxios = axios as jest.Mocked<typeof axios>; mockedAxios.get.mockResolvedValue({ data: "mocked data" }); const data = await fetchDataFromAPI(); expect(data).toEqual("mocked data"); });
Com essas configurações e práticas, você estará pronto para escrever testes eficazes e manter a qualidade do seu código TypeScript ao longo do tempo.