Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Dúvida nos testes das classes Service

Olá, tudo bem?

Existem algumas funções das classes service onde somente é chamado o repository. Nenhuma validação ou manipulação dos dados é feita. Um exemplo disso é a função listar do AbrigoService.

Na resolução do desafio eu não criei testes para essas funções visto que nenhuma regra de negócio é feita nelas. Mas, na resolução apresentada, essas funções são testadas.

Minha dúvida é se devemos ou não criar testes unitários para essas funções. Entendo que em um projeto maior esse tipo de função deve ser testada em um teste de integração, testando também o repository.

Quais as boas práticas para esse tipo de situação.

Obrigado e um abraço.

1 resposta
solução!

Olá, Raul! Como vai?

Entendo a sua dúvida e ela é muito pertinente. Em um cenário ideal, todas as funções deveriam ser testadas, inclusive aquelas que apenas chamam o repository. Mesmo que essas funções não tenham regras de negócio ou manipulação de dados, elas fazem parte do fluxo do seu código e, portanto, também podem apresentar falhas.

Por exemplo, imagine que em algum momento, por um erro de digitação ou um refactoring no código, o método que deveria chamar o repository para listar os dados não o faz mais. Se você tiver um teste para essa função, você identificará esse problema imediatamente. Se não tiver, esse problema pode passar despercebido até que alguém tente usar essa funcionalidade no sistema.

Além disso, os testes unitários servem não só para encontrar bugs, mas também para documentar o comportamento esperado do seu código. Quando você escreve um teste para a função listar(), você está explicitamente definindo que o comportamento esperado dela é chamar o método findAll() do repository.

No entanto, você está correto ao dizer que em um projeto maior essas funções também devem ser testadas em um teste de integração. Testes de integração são importantes para garantir que todas as partes do seu sistema estão trabalhando juntas corretamente, incluindo o acesso ao banco de dados.

Então, em resumo, a boa prática seria sim criar testes unitários para essas funções, além de também testá-las em testes de integração. Mas lembre-se que cada projeto tem suas particularidades e limitações, e nem sempre é possível seguir todas as boas práticas à risca.

Espero ter ajudado e bons estudos!