Como criar um projeto Node.js com TypeScript: um guia passo a passo para iniciantes
28 de April de 2023Princípios SOLID: Explorando os Segredos para um Código de Qualidade
12 de May de 2023Teste seu código com Jest: um guia passo a passo para adicionar Jest a um projeto Node.js
Neste artigo, aprenderemos como incluir a estrutura de teste Jest em um projeto Node.js, passo a passo.
Jest é uma estrutura de teste amplamente usada por sua velocidade e flexibilidade.
Nosso guia supõe que você já possui um ambiente Node.js e TypeScript configurado. Se não, você pode seguir o tutorial logo abaixo que ensina como criar um projeto Node.js com TypeScript.
Benefícios dos Testes Automatizados com Jest
A inclusão de testes automatizados em seu projeto Node.js com Jest traz muitos benefícios. Aqui estão alguns dos mais significativos:
- Qualidade de Código: Os testes automatizados ajudam a manter a qualidade do seu código, permitindo a identificação rápida de bugs e falhas. Quando você corrige esses problemas rapidamente, você está garantindo a entrega de um software de melhor qualidade.
- Refatoração Segura: Quando seu código é bem testado, você pode fazer alterações e refatorações com mais segurança, sabendo que se algo quebrar, seus testes irão alertá-lo.
- Produtividade Aumentada: Embora escrever testes possa parecer um investimento de tempo à primeira vista, a longo prazo, ele economiza tempo ao reduzir o tempo de depuração e evitar a introdução de bugs novos ou recorrentes.
-
Integração Contínua: Os testes automatizados são uma parte crucial de qualquer pipeline de Integração Contínua/Desenvolvimento Contínuo (CI/CD). Eles garantem que cada nova mudança seja testada antes de ser integrada, reduzindo a chance de interrupções inesperadas na produção.
-
Documentação de Código: Os testes funcionam como uma espécie de documentação, mostrando como as funções deveriam funcionar e como podem ser usadas. Isso é particularmente útil para novos membros da equipe que estão tentando entender o código.
Pré requisito
Para começar, precisamos ter um projeto Node.js com TypeScript configurado. Este guia seguirá as diretrizes do tutorial Como criar um projeto Node.js com TypeScript, incluindo a configuração do ambiente de desenvolvimento, instalação de dependências e criação de um servidor web básico.
Aprimorando a base do projeto
1. Renomeie o arquivo src/index.ts
para src/app.js
e adicione o seguinte conteúdo a ele:
import express, { Request, Response } from 'express'; const app = express(); app.get('/', (req: Request, res: Response) => { res.send('Hello, World!'); }); export default app;
2. Crie o arquivo src/server.ts
e adicione o seguinte conteúdo a ele:
import app from "./app"; app.listen(3000, () => { console.log('Server listening on port 3000'); });
3. Altere o arquivo package.json
na area de scripts
"scripts": { "start": "ts-node src/server.ts", "build": "tsc", "dev": "nodemon src/server.ts", },
Passo a passo para a inclusão do Jest
Com a base do projeto pronta, podemos prosseguir com a instalação e configuração do Jest:
- Instale o Jest como uma dependência de desenvolvimento, digitando o seguinte comando no terminal dentro do diretório do projeto:
npm install jest ts-jest @types/jest --save-dev
- Crie um arquivo
jest.config.js
na raiz do seu projeto e adicione o seguinte código:
module.exports = { preset: 'ts-jest', testEnvironment: 'node', modulePathIgnorePatterns: ['<rootDir>/dist/'] };
ts-jest
para lidar com TypeScript e para usar o ambiente de teste node
. Também ignore o diretório dist/
para que o Jest não tente executar testes na pasta de build.- Adicione o seguinte script ao seu arquivo
package.json
para que você possa executar seus testes com o comandonpm test
:
module.exports = { preset: 'ts-jest', testEnvironment: 'node', modulePathIgnorePatterns: ['<rootDir>/dist/'] };
- Instale o pacote
supertest
como uma dependência de desenvolvimento
npm install supertest --save-dev
- Agora, crie uma pasta
__tests__/
na raiz do seu projeto e adicione um arquivo de teste chamadoindex.test.ts
: com o seguinte conteúdo:
import request from 'supertest'; import app from '../src/app' describe('GET /', () => { it('should return "Hello, World!"', async () => { const response = await request(app).get('/'); expect(response.status).toBe(200); expect(response.text).toBe('Hello, World!'); }); });
- Finalmente, execute o comando
npm test
no terminal e você deverá ver a saída do Jest indicando que o teste foi bem sucedido:
PASS __tests__/index.test.ts GET / ✓ should return "Hello, World!" (10 ms) Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: 0.891 s, estimated 1 s
Conclusão
Como vimos, a implementação de testes automatizados com Jest em seu projeto Node.js traz uma série de benefícios valiosos.
Garante não apenas a qualidade e a robustez do seu código, mas também uma maior produtividade no ciclo de desenvolvimento.
Se você precisar de ajuda para implementar testes em seu projeto, configurar um ambiente de desenvolvimento Node.js, ou qualquer outra necessidade de desenvolvimento de software, a LOLDEV está aqui para ajudá-lo.
Contamos com um time de especialistas prontos para auxiliar em seu projeto.
Entre em contato conosco e vamos juntos criar soluções incríveis!