Mockito: Como testar chamada de método
Muita gente começa a usar o framework Mockito para fazer testes em Java e tem dúvidas de como verificar se o método de uma dependência foi ou não chamado.
Confira no exemplo abaixo como fazer a verificação de chamada de método de uma dependência com o Mockito.
Exemplo:
Primeiro vamos definir a Classe que está sendo testada e uma dependência dela na qual vamos verificar a chamada do método, através de um Mock criado com o Mockito.
package br.com.dicasdejava.mockito.verificarSeMetodoFoiChamado;
public class ClasseSendoTestada {
DependenciaDaClasseSendoTestada dependencia;
public ClasseSendoTestada(DependenciaDaClasseSendoTestada dependencia){
this.dependencia = dependencia;
}
void metodoSendoTestado(String parametro){
dependencia.metodoQueSeraChamado(parametro);
}
}
Agora a dependência:
package br.com.dicasdejava.mockito.verificarSeMetodoFoiChamado;
public interface DependenciaDaClasseSendoTestada {
void metodoQueSeraChamado(String parametro);
}
Teste
E o teste que faz a verificação da chamada do método com Mockito.
package br.com.dicasdejava.mockito.verificarSeMetodoFoiChamado;
import org.junit.Test;
import org.mockito.Mockito;
public class ClasseSendoTestadaTest {
@Test
public void testeMetodoFoiChamado(){
//Cria Mock da dependência
DependenciaDaClasseSendoTestada dependencia = Mockito.mock(DependenciaDaClasseSendoTestada.class);
//Instancia a classe sendo testada passando a dependência Mockada
ClasseSendoTestada classeSendoTestada = new ClasseSendoTestada(dependencia);
//chama o método sendo testado
classeSendoTestada.metodoSendoTestado("parâmetro-teste");
//Verifica se o método da dependência foi chamado (incluindo o parâmetro exato)
Mockito.verify(dependencia, Mockito.times(1)).metodoQueSeraChamado("parâmetro-teste");
}
}
Este teste verifica se o método da dependência da classe foi chamado e ainda verifica a quantidade de vezes que ele foi testado.
Se, por exemplo, quisermos verificar se o método foi acessado 5 vezes bataria informar 5 no segundo parâmetro do método estático verify da classe Mockito.