Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • aiprodutor-wiki aiprodutor-wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Ai Produtor Sistema de Cadastro e Gestao de Produtores de Hortifrutie
  • aiprodutor-wikiaiprodutor-wiki
  • Wiki
  • qualidade

qualidade · Changes

Page history
Update qualidade authored Oct 12, 2025 by Francine De Oliveira Delanni's avatar Francine De Oliveira Delanni
Hide whitespace changes
Inline Side-by-side
qualidade.md
View page @ 994a7886
......@@ -120,29 +120,46 @@ O projeto utiliza o Jest, um framework de testes completo para JavaScript/TypeSc
O Jest atua como o executor e verificador dos testes. Ele oferece um ambiente integrado que combina:
- **Test Runner (Executor de Testes):** **:** O Jest é o programa que ativamente procura por arquivos de teste em nosso projeto (os arquivos `.spec.ts`) e os executa um por um
- **Assertion Library (Biblioteca de Asserção):** permite escrever vO Jest nos dá a ferramenta principal da investigação: a função `expect()`. Com ela, fazemos "asserções" (afirmações) sobre o nosso código. Por exemplo: `expect(soma(2, 2)).toBe(4);` se traduz para: "Eu afirmo que o resultado de `soma(2, 2)` deve ser `4`"
- **Assertion Library (Biblioteca de Asserção):** permite escrever vO Jest nos dá a ferramenta principal da investigação: a função `expect()`. Com ela, fazemos "asserções" (afirmações) sobre o nosso código. Por exemplo: `expect(soma(2, 2))toBe(4);` se traduz para: "Eu afirmo que o resultado de `soma(2, 2)` deve ser `4`"
- **Mocking Library (Biblioteca de Simulação):** Em um caso complexo, o detetive precisa isolar a cena do crime. O Jest nos permite "mocar" (do inglês *mock*, que significa simular ou imitar) as dependências. Se o `AreasService` depende do `AreasRepository` para falar com o banco de dados, podemos dizer ao Jest: "Para este teste, finja que o `AreasRepository` existe e, quando o método `findById` for chamado, retorne este objeto falso aqui". Isso isola o teste apenas para a lógica do `AreasService`
- **Relatórios (Reporting):** exibe no terminal um resumo dos testes, indicando quais passaram (PASS) e quais falharam (FAIL)
### Estrutura e convenções
Os arquivos de teste seguem um padrão para que o Jest os identifique automaticamente:
- `*.spec.ts`: testes unitários de uma funcionalidade específica, como areas.service.spec.ts
- `*.e2e-spec.ts`: testes ponta-a-ponta (End-to-End), que verificam o comportamento da aplicação completa através de requisições HTTP reais.
- **Relatórios (Reporting):** Após a investigação, o Jest apresenta um relatório claro no terminal, dizendo quais afirmações (`expect`) foram confirmadas (`PASS`) e quais foram refutadas (`FAIL`)
### Nomenclatura
A forma como nomeamos nossos arquivos de teste não é aleatória. É uma **convenção**, um acordo que fazemos para que o Jest encontre os testes sem precisarmos configurar nada.
Dissecando o nome do arquivo de teste `areas.service.spec.ts` temos:
- `areas.service`: esta é a **unidade sob teste**. O nome indica claramente que este arquivo de teste é responsável por verificar o comportamento do arquivo `areas.service.ts`
- `.spec`: esta é a parte mais importante. Significa **"Specification" (Especificação)**. Este arquivo não é apenas um "teste", ele é um documento executável que *especifica* como o `areas.service.ts` *deve* se comportar. É o conjunto de regras e requisitos daquela unidade. Outra convenção comum é `.test`, que tem o mesmo significado. Em nosso projeto, adotamos `.spec`
- `.ts`: indica que o arquivo é escrito em **TypeScript**
O sufixo `.spec` vem de Specification, reforçando a ideia de que cada teste documenta o comportamento esperado do código, e não apenas o valida.
- `.e2e`: significa **End-to-End (Ponta-a-Ponta)**. Este sufixo especial nos diz que o escopo do teste é diferente. Ele não vai testar uma unidade isolada, mas sim um fluxo completo da aplicação, geralmente disparado por uma requisição HTTP
### Estrutura de teste
Os testes em **Jest** seguem uma estrutura organizada em blocos e verificações:
### Tipos de teste
- **Testes Unitários**
- **`describe(nome, função)`**
Agrupa testes relacionados em uma **suíte de testes**.
Analogia: é como o **capítulo de um livro**, com todos os testes desse bloco focados em uma funcionalidade específica.
Os testes unitários garantem que partes isoladas do sistema (como services e controllers) funcionem corretamente.
Usando o módulo de testes do NestJS (`@nestjs/testing`), é possível injetar dependências simuladas (mocks) e validar apenas a lógica da unidade sob teste, sem interação real com o banco de dados ou outros módulos.
- **`it(descricao, função)` ou `test(descricao, função)`**
Representa um **caso de teste individual**.
Analogia: é como um **parágrafo dentro do capítulo**, testando uma única coisa. A descrição deve explicar claramente o que está sendo testado.
- **Testes End-to-End (E2E)**
- **`expect(valor)`**
Faz uma **asserção**, verificando se o valor obtido corresponde ao valor esperado.
Os testes E2E verificam o fluxo completo da aplicação, simulando o uso real do sistema.
Para isso, o Jest sobe uma instância da aplicação em memória e utiliza a biblioteca supertest para enviar requisições HTTP (como GET /areas ou POST /producers), validando o código de status e o corpo da resposta.
Esses testes asseguram que todos os componentes do sistema — módulos, rotas e integrações — estejam funcionando em conjunto corretamente.
- **Matchers (`.toBe()`, `.toEqual()`, `.toThrow()`, etc.)**
Métodos que completam a asserção, permitindo comparar valores ou verificar erros.
Exemplos:
```javascript
expect(resultado).toBe(5); // espera que seja exatamente 5
expect(objeto).toEqual({ id: 1 }); // espera que o objeto seja igual em valor
expect(() => func()).toThrow(); // espera que a função lance um erro
### Execução
Os testes são executados com o comando:
......
Clone repository

📚 Wiki

🏠 Home 🔸Descrição do Projeto
🔸Sumário
🔸Equipe
📋 Escopo
🏗️ Arquitetura
🛠️ Configuração
🎨 Mockups
🗄️ Banco de Dados
📊 Gerência 🔸Termo de abertura do projeto
🔸Estrutura analítica de projeto (EAP)
🔸Cronograma
🔸Plano de comunicação
🔸Matriz de responsabilidades
🔸Plano de riscos
✅ Qualidade
🔄 Processo 🔸Papeis
🔸Sprints
🔸Apresentações
🔸Artefatos
🔸Acompanhamento das Entregas