Olá Pessoal,
Estou com uma dúvida que está me impedindo de fazer alguns testes unitários, e acho q vocês matarão rápido.
Bem, na minha estrutura eu tenho uma DAO Generica e uma DAOFactory que injeto nos controllers do vRaptor3 qnd preciso, segue abaixo parte simplificada do código para melhor compreensão:
DAO:
public class DAO<T> {
protected final Session session;
private final Class classe;
public DAO(Session session, Class classe) {
this.session = session;
this.classe = classe;
}
public void saveOrUpdate(T u){
session.saveOrUpdate(u);
}
...
}
DAOFactory:
@Component
public class DaoFactoryImpl implements DaoFactory{
...
private Session session;
public DaoFactoryImpl(Session session) {
this.session = session;
}
public DAO<Analise> getAnaliseDAO() {
return new DAO<Analise>(this.session, Analise.class);
}
...
}
Controller:
@Resource
public class AnaliseController {
private final Result result;
private DaoFactory daoFactory;
public AnaliseController(Result result, DaoFactory daoFactory) {
this.result = result;
this.daoFactory = daoFactory;
}
@Post
@Path("/analise/salva")
public void adiciona(Analise analise) {
daoFactory.getAnaliseDAO().saveOrUpdate(analise);
result.redirectTo(AnaliseController.class).lista();
}
...
}
Teste:
public class AnaliseControllerTest {
private Mockery mockery;
private DaoFactory daoFactory;
private AnaliseController controller;
@Before
public void setUp() throws Exception {
mockery = new Mockery();
daoFactory = mockery.mock(DaoFactory.class);
Result result = new MockResult();
controller = new AnaliseController(result, daoFactory);
}
@Test
public void testaSeAdicionaAnalise() throws Exception {
mockery.checking(new Expectations() {{
???? one(daoFactory).getAnaliseDAO();
???? will(returnValue(Class.class));
????
}});
Analise analise = new Analise();
analise.setNome("teste");
controller.adiciona(analise);
mockery.assertIsSatisfied();
}
}
Pergunta:
Como Efetuar um teste para o método “adiciona” de AnaliseController usando o JMock ?
Fiz umas tentativas frustradas aqui(tipo essa acima), e gostaria desse auxílio, por favor.
Percebam que o foco do teste está na linha que possui( getAnaliseDAO() ) do método adiciona.
Obrigado.