For the complete documentation index, see llms.txt. This page is also available as Markdown.

Testar Services (obsoleto)

Serviços DEVERIAM ser principalmente testados usando testes de API, ou seja, um conjunto de testes que exercitam o código do serviço através da sua API iniciando o serviço, com suas dependências externas sendo mockadas (DBs e APIs). Teste unitário DEVE ser incluído nos casos em que se encontra trechos utilitários de código com um grande número de casos a serem exercitados ou código não performático, tornando impossível ou difícil testar com testes de API. A justificativa por trás disso é que, devido à nossa arquitetura de micro-serviços, que reduz as responsabilidades e, portanto, a quantidade de código a ser testada, a lógica dos serviços é simples, fazendo dos testes de API a opção com mais valor por tempo ao garantir que os serviços funcionem corretamente.

Stack de testes

Serviços DEVEM ser testados usando Jest como o framework principal de testes com supertest como o framework para configurar o servidor e testá-lo.

Estrutura de diretórios

Como os serviços PODEM ter tanto testes de API quanto testes unitários, haverá mais de um lugar onde os testes irão:

  • Testes unitários DEVEM ficar ao lado do arquivo ou módulo que estão testando, com o mesmo nome, mas com a extensão spec.ts em vez de ts.

  • Testes de API irão exercitar o código ao longo do serviço, então ELES DEVEM ser colocados em um diretório de teste , no caminho raiz. Os arquivos serão nomeados como o recurso do serviço que eles irão testar, ou seja, se os testes de API irão testar o recurso books, normalmente sob /books, o nome do arquivo DEVE ser books.spec.ts e DEVE ser colocado no diretório de teste diretório.

O que testar

  • Middlewares aplicados à rota (auth, etc), para garantir que a rota funcione como esperado.

  • A lógica dos controllers, para garantir que a rota faça o que esperamos que ela faça.

Testando serviços via API

Como mencionado antes, testes de API serão feitos usando Jest e supertest.

Para ilustrar como um desenvolvedor fará testes de API, temos o seguinte exemplo:

Encontramos no exemplo uma rota com diferentes métodos HTTP, GET e POST. Ambos os endpoints referem-se ao mesmo recurso, books, então um arquivo, chamado books.spec.ts DEVE ser criado sob o diretório de teste diretório para abrigar os testes para eles.

Todas as rotas e os diferentes fluxos de execução DEVEM ser testados minuciosamente. Estes são os casos que o desenvolvedor DEVE testar para esses endpoints:

  • Solicitar todos os livros funciona, respondendo com um 200 e a lista de todos os livros.

  • Solicitar todos os livros de um determinado autor funciona, respondendo com um 200 e a lista de todos os livros desse autor.

  • Publicar um livro sem autenticação falha, respondendo com um 401 e uma mensagem de erro.

  • Publicar um livro autenticado funciona, respondendo com um 200 e inserindo o livro.

Esses casos definitivamente terão seus its e a expectativa desses its DEVE conter pelo menos o status de resposta esperado e o que é esperado no corpo da resposta (se houver).

É assim que esses testes de endpoint devem ser escritos:

Atualizado