Olá, tudo bem?
Eu estou com dúvida sobre teste, e o seguinte segundo a documentação existem testes unitários e testes de integração.
Nos Testes Unitários eu testo apenas uma pequena parte do meu código.Correto?
E no Teste de Integração eu posso testar usando diversas partes do meu código (controller, serviço, banco).Correto?
Acontece que eu sigo o padrão MVC e o caminho da minha aplicação e assim a requisição bate no controller, manda para o service onde é feita a lógica de negócios e manda para o repository (banco de dados).
Dessa forma: controller -> service -> repository.
Nos testes de Integração, eu crio uma classe de teste para testar um método específico dentro do meu controller e lá eu acabo utilizando minhas outras classes (service e repository) através de Mock, se necessário.
(1 dúvida) É aconselhável usar o Mock em minhas classes de teste de integração ao invés de realmente instanciar?
(2 dúvida) Eu preciso criar uma classe diferente para cada método presente dentro do meu controller? Ou eu posso testar todos os meus métodos dentro de uma classe teste só?
(3 dúvida) Referente aos testes unitários, em qual parte da minha estrutura MVC eu deveria testar? O serviço? O controller? As query dentro do meu repositório? Ou todos?
(4 dúvida) Como eu sei se um teste deveria ser um teste unitário ou um teste de integração?