... | ... | @@ -161,14 +161,21 @@ Os testes em **Jest** seguem uma estrutura organizada em blocos e verificações |
|
|
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:
|
|
|
### Fluxo no projeto
|
|
|
- **Criação:**
|
|
|
Quando você cria uma nova funcionalidade, por exemplo, no `producers.service.ts`, você também cria um arquivo `producers.service.spec.ts` na pasta de test.
|
|
|
|
|
|
- **Isolamento (Testes Unitários):**
|
|
|
Dentro do `.spec.ts`, usamos o `@nestjs/testing` para criar um "módulo de teste". Isso nos permite injetar "mocks" (versões falsas) das dependências. Não queremos testar o banco de dados aqui, apenas a lógica de negócio do `ProducersService`.
|
|
|
|
|
|
- **Fluxo Completo (Testes E2E):**
|
|
|
Para os testes na pasta `/test` (`.e2e-spec.ts`), nós não usamos mocks. Nós subimos uma instância completa e real da nossa aplicação em memória. Então, usamos a biblioteca **supertest** para fazer chamadas HTTP de verdade (`GET /producers`, `POST /producers`) e usamos `expect` para verificar a resposta HTTP (status code, corpo da resposta, etc).
|
|
|
|
|
|
- **Execução:**
|
|
|
Quando você roda o comando:
|
|
|
```bash
|
|
|
npm test
|
|
|
|
|
|
`npm test`
|
|
|
|
|
|
Esse comando faz com que o Jest:
|
|
|
- Localize todos os arquivos `*.spec.ts` e `*.e2e-spec.ts` no projeto
|
|
|
- Execute cada caso de teste de forma isolada
|
|
|
- Gere um relatório no terminal com os resultados, tempos de execução e possíveis erros
|
|
|
|
|
|
|