Eu sou novo no teste de unidade, tenho um método da web REST que apenas chama DB e preenche um DTO. O pseudo código é
public object GetCustomer(int id)
{
CustomerDTO objCust = //get from DB
return objCust;
}
Minha dúvida é como escrever testes para esses métodos e tipos de testes (Integração / Unidade) a serem incluídos. E para testes de unidade, ele precisa atingir o banco de dados. Se fosse e eu passar um ID de cliente e fizer poucas afirmações, os dados poderão mudar eventualmente resultando em falhas.
Acho que estou perdendo algo aqui, entendendo esses conceitos.
testing
unit-testing
rest
integration-tests
Ensolarado
fonte
fonte
Respostas:
Durante o teste de unidade, não é esperado que você teste com um banco de dados, ou pelo menos não com um banco de dados que não tenha preparado para o teste de unidade. Testar com um banco de dados e, como tal, testar diferentes camadas do seu aplicativo ao mesmo tempo é geralmente visto como testes de integração . Com os testes de unidade, você deve testar apenas o que o seu método faz, o que ele retorna dependendo dos parâmetros diferentes e quando (ou não) deve falhar.
É esperado que, em seu método, você faça chamadas para métodos X de outras classes. Você não está testando esses métodos X , portanto, o que você precisa fazer é zombar desses métodos.
Suponho que você esteja escrevendo seu código em Java; nesse caso, você possui ótimas estruturas de zombaria, como o Mockito, que podem ser úteis para você. Se você usa ou não uma estrutura de simulação é sua escolha, vou apenas dizer que eles economizarão muito tempo e a que mencionei pelo menos não é realmente complicada.
Se você deseja apenas escrever seu próprio mock para experimentar, suponha que você tenha a seguinte
CustomerRepository
classe:Você pode escrever sua própria
CustomerRepository
classe zombada e suja da seguinte maneira:Então, no seu caso de teste, você basicamente substitui sua instância "padrão"
CustomerRepository
por uma instância simulada que permitirá testar seu método para vários resultados degetCustomer
:Geralmente, todo método de teste deve testar apenas uma coisa, isso ajuda a manter seus testes pequenos e focados em uma tarefa.
Vou repetir :-) Escrever uma aula toda ridicularizada leva algum tempo, como você vê. Considere usar uma estrutura de zombaria, quanto menos se escreve código, menos erros se comete , certo? Zombar de um método que gera uma exceção ou retorna um determinado valor para um determinado parâmetro é um pedaço de bolo e leva 2 ou 3 linhas (com pelo menos mockito)
Espero que ajude a testar seu método REST.
fonte