O ESM Forum é um sistema minimalista de demonstração do livro Engenharia de Software Moderna. Ele é um fórum simples de perguntas e respostas. O objetivo é permitir que os alunos tenham um primeiro contato prático com os conceitos estudados no livro. Ou seja:
- Trata-se de um sistema com objetivo didático e, por isso, não temos a intenção de colocá-lo em produção.
- Também não temos a intenção de implementar um sistema completo, com todas as funcionalidades possíveis.
A interface do sistema é também muito simples, conforme mostrado abaixo.
O frontend está implementado, usando React, em um repositório separado.
O backend do sistema, que está neste repositório, usa JavaScript e também as seguintes tecnologias:
- Node.js, um sistema que permite a execução de programas JavaScript fora de browsers, isto é, em servidores.
- Express, uma biblioteca para construção de aplicações Web em Node.js.
- SQLite, um banco de dados relacional simples.
- Jest, um framework para implementação de testes de unidade e de integração.
Veja neste link.
O ESM Forum possui alguns testes de integração, implementados usando o Jest. Para mais informações sobre esse tipo de teste consulte o Capítulo 8 do livro.
Os testes de integração estão implementados no arquivo modelo.test.js.
Eles verificam a camada de modelo e o acesso da mesma ao banco de dados, conforme ilustrado a seguir:
flowchart LR
BD[(BD)]
Frontend <--->|json| Controlador
subgraph backend
Controlador <--> Modelo
subgraph testes de integração
Modelo <--> BD
end
end
Primeiro, certifique-se de que instalou o backend do sistema, conforme explicado aqui.
Basta instalar o backend, isto é, para fins exclusivos deste teste, você não precisa rodar o servidor do lado backend. O motivo é que o teste vai testar apenas as funções da camada de Modelo e o acesso delas ao banco de dados (veja figura acima)
Depois, digite na pasta raiz do projeto:
npm test
Para ver a cobertura dos testes, digite:
npm test -- --coverage
Para ver o relatório de cobertura, abra o arquivo:
coverage/lcov-report/index.html
Também é possível ver a cobertura no próprio código exibido pela IDE. Para isso, basta adicionar alguma extensão compatível. Um exemplo, para o VSCode, é a Coverage Gutters, que marca no próprio arquivo os trechos de código cobertos e os não cobertos pelos testes.
Após o rodar o comando acima, você vai perceber que a cobertura
de comandos (Stmts) do arquivo modelo.js é de 78.26%.
Implemente então um ou mais casos de testes, sempre no arquivo modelo.test.js, de forma que essa cobertura atinja 100%.
