1
resposta

Dao Injetado

Não consigo "mockar" o dao sem que eu passe ele no construtor da classe.

 EncerradorDeLeilao encerrador = new EncerradorDeLeilao(daoFalso);

Não quero criar esse construtor nem receber nada nele, quero utilizar minha EncerradorDeLeilao sem ter esse construtor e receber as minhas dependências por injeção

public class EncerradorDeLeilao {

@Inject
private LeilaoDao dao;
}

como eu faço para o teste funcionar assim ?

1 resposta

Fala aí Raphael,

Uma outra alternativa é você declarar um setter para o DAO.

Existe outra alternativa para fazer isso, mas no momento do teste você vai ter subir o container de injeção de dependência, e busca-la manualmente através do BeanManager (no caso do CDI).

Ou utilizar algo que faça isso para você, sugiro que você olhe http://arquillian.org/guides/getting_started/?utm_source=cta

Porém é uma boa prática receber nossas dependências via construtor, pois dessa forma garantimos que nossos objetos sempre vão estar em um estado consistente. E dessa forma facilita na hora de testar. O CDI, Spring, Guice por exemplo tem suporte à injeção de dependências via construtor, usando dessa forma você consegue testar sem precisar do frameworkde IoC/DI up.

Espero ter ajudado!