3
respostas

Mock de objeto declarado dentro de metodo;

Boa tarde a todos!

Como faço quando tenho a seguinte situação:

public boolean meuMetodo(){
    //Classe declarada dentro do metodo
    ClasseParaMock m = new ClasseParaMock();

    //Preciso mockar esse resultado (m.metodoParaMock())
      boolean retorno = m.metodoParaMock();

        return retorno; 
}


@Test
public teste(){
   //Como simular o retorno do metodo m.metodoParaMock();

    boolean b = meuMetodo();

    ...
}

É possível fazer isso?

Muito obrigado a todos;

3 respostas

Oi Willians, tudo bem ?

Você tem algumas opções :

Uma delas é mockar a classe que de devolve esse boolean, que você quer no teste :

ClasseDoTeste mock = Mockito.mock(ClasseDoTeste.class);

when(mock.meuMetodo()).thenReturn(true);

Outra forma que você pode fazer é mockar o objeto que fará a regra de negócio dentro do seu método :

ClasseParaMock mock = Mockito.mock(ClasseParaMock.class);
when(mock.metodoParaMock()).thenReturn(true);

ClasseDoTeste cdt = new ClasseDoTeste(mock);

boolean resultado = cdt.meuMetodo();

Espero ter ajudado !

Abraços :D

Olá Matheus,

Se por acaso eu não puder usar essas opções, não tem como mockar o objeto que esteja dentro do método?

Em outras palavras, fazer um mock sem alterar o método :

 ... meuMetodo() ...

Obrigado.

Willians, objetos criados dentro do método acabam ficando presos ao escopo deste método (a menos que seja retornado), não é possível acessá-lo anteriormente para mockar ele.

No mínimo o método deveria receber esse objeto como argumento para que fosse possível testa-lo.