Skip to content

Felps03/node-native-testing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Estudo de Teste Unitário e E2E com NodeJS Nativo

Este repositório serve como um exemplo para a criação de testes unitários e E2E (End-to-End) utilizando NodeJS Nativo. Este projeto é para fins de estudo e ilustra como testar uma API REST básica de usuários.

Conceito: Testes Unitários vs E2E

Esses dois tipos de teste respondem perguntas diferentes:

  • Teste Unitário: "essa função, isolada, faz o que deveria?" — chama o código diretamente (userService, utils), sem subir servidor e sem rede. É rápido, então você escreve muitos.
  • Teste E2E: "o sistema inteiro, do jeito que um usuário real usaria (HTTP), funciona?" — faz requisições fetch contra o servidor rodando, passando por rotas, regras de negócio e dados. É mais lento, então você escreve poucos, cobrindo os fluxos principais.
flowchart TD
    A["Testes E2E<br/>poucos • lentos • alta confiança<br/>testam o sistema por fora, via HTTP"]
    B["Testes Unitários<br/>muitos • rápidos • isolados<br/>testam uma função por vez, sem rede"]
    A --> B
Loading

No código deste repositório, isso se traduz em onde cada teste "entra" na aplicação:

flowchart LR
    subgraph App["Aplicação (src/)"]
        Routes["index.js<br/>Rotas Express"] --> Service["services/userService.js<br/>Regras de negócio"]
        Service --> Utils["utils.js<br/>getNextId"]
        Service --> Data[("users<br/>array em memória")]
    end

    E2E["__test__/e2e<br/>fetch via HTTP"] -->|"requisição HTTP<br/>servidor precisa estar rodando"| Routes
    Unit["__test__/unit<br/>chamada direta"] -->|"chama a função,<br/>sem servidor"| Service
    Unit -->|"chama a função,<br/>sem servidor"| Utils
Loading

Pré-requisitos

  • Node.js v24 ou superior (LTS mais recente)
  • Navegador com suporte a fetch API para rodar os testes E2E

Estrutura do Projeto

  • src/ - Código-fonte da aplicação
    • index.js - Rotas da API REST de usuários (Express)
    • services/userService.js - Regras de negócio de usuários (buscar, criar, atualizar, remover)
    • utils.js - Função para gerar um novo ID para um usuário
  • __test__/ - Testes
    • unit/ - Testes unitários (utils.js e services/userService.js)
    • e2e/ - Testes E2E (rotas da API com o servidor em execução)

Como rodar o projeto

  1. Instale as dependências

    npm install
  2. Para rodar a aplicação:

    npm run start

Rodando os Testes

Testes Unitários

Para rodar os testes unitários:

npm run test:unit

Testes E2E

Nota: Antes de rodar os testes E2E, certifique-se de que a aplicação está rodando.

Para rodar os testes E2E:

npm run test:e2e

Cobertura de Testes

Para gerar o relatório de cobertura de testes:

npm run test:coverage

Scripts NPM

Aqui estão os scripts que você pode usar:

  • npm run test - Rodar todos os testes
  • npm run test:unit - Rodar apenas os testes unitários
  • npm run test:e2e - Rodar apenas os testes E2E
  • npm run test:coverage - Rodar os testes e gerar relatório de cobertura
  • npm run start - Iniciar a aplicação

Tecnologias Utilizadas

  • Node.js 24
  • Testes nativos do Node.js
  • Fetch API para testes E2E

CI

Este repositório possui um workflow do GitHub Actions (.github/workflows/ci.yml) que roda automaticamente em pushes e Pull Requests para a branch main: instala as dependências, executa os testes unitários e, em seguida, sobe a aplicação e executa os testes E2E contra ela.

Contribuição

Este projeto é para fins de estudo, então sinta-se à vontade para clonar, modificar e enviar Pull Requests.

About

Estudo de testes unitários e E2E com o test runner nativo do Node.js (node --test), numa API REST de usuários com Express.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors