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!