Gente, boa noite, estou com um projeto em que a minha classe DAO está da seguinte maneira:
@PersistenceContext
private EntityManager manager;
public List<Correntista> find(int agencia, int conta){
return manager
.createQuery("select c from Correntista c where c.agencia=:agencia and c.conta=:conta",
Correntista.class)
.setParameter("agencia", agencia)
.setParameter("conta", conta).getResultList();
}
E na minha classe de teste, estou tentando escrever o teste dessa maneira:
EntityManager manager = Mockito.mock(EntityManager.class);
Query query = Mockito.mock(Query.class);
CorrentistaDAO correntistaDAO = new CorrentistaDAO();
Transferencia transferencia = new Transferencia();
transferencia.setAgenciaOrigem(1);
transferencia.setContaOrigem(2);
transferencia.setAgenciaDestino(3);
transferencia.setContaDestino(4);
transferencia.setValor(new BigDecimal("10.00"));
String sql = "select c from Correntista c where c.agencia=:agencia and c.conta=:conta";
Correntista correntista = new Correntista();
Mockito.when(manager.createQuery(sql)).thenReturn(query);
Mockito.when(query.getSingleResult()).thenReturn(correntista);
Mockito.when(query.setParameter("agencia", transferencia.getAgenciaOrigem())).thenReturn(query);
Mockito.when(query.setParameter("conta", transferencia.getContaOrigem())).thenReturn(query);
List<Correntista> lista = correntistaDAO.find(transferencia.getAgenciaOrigem(), transferencia.getContaOrigem());
A minha dúvida é, como eu digo para o meu Dao utilizar o manager q dei o Mock ?