package br.ufpi.util;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import br.com.caelum.vraptor.util.test.JSR303MockValidator;
import br.com.caelum.vraptor.util.test.MockResult;
import br.ufpi.controllers.UsuarioController;
import br.ufpi.models.Usuario;
import br.ufpi.repositories.UsuarioRepositoryImpl;
public class GerarDadosBanco {
private UsuarioRepositoryImpl usuarioRepository;
private MockResult result;
private JSR303MockValidator validator;
private UsuarioController usuarioController;
@Before
public void before() {
usuarioRepository=Mockito.mock(UsuarioRepositoryImpl.class);
result = Mockito.spy(new MockResult());
validator = Mockito.spy(new JSR303MockValidator());
usuarioController = new UsuarioController(result, usuarioRepository,
validator);
}
@Test
public void gerarUsuarios() {
System.out.println("Salvando Usuarios");
Usuario usuario = new Usuario("cleiton", "moura",
"[email removido]", "[telefone removido]");
usuarioController.create(usuario);
Mockito.verify(usuarioRepository).create(usuario);
}
}
Vraptor + mockitto
9 Respostas
bom dia cleiton
realmente dessa maneira os dados nao vao ser persistidos. pois vc esta mockando seu repositorio.
Caso seu teste seja de unidade então vc está fazendo da maneira correta, ou seja, isolando seu codigo.
Segue uma explicação legal sobre mocks e qdo usa-los
http://improveit.com.br/xp/praticas/tdd/mock_objects
abrasss
Como o Renan já falou, se você mockou o repository ele não vai fazer nada mesmo.
o teste de controller talvez não seja o melhor lugar para testar se o objeto vai pro banco
Vc tem algum exemplo jah feito pra passar?
se não for pedir demais.
dá uma olhada nos testes dos controllers
http://github.com/caelum/calopsitadá uma olhada nos testes dos controllers
Lucas, como você faz para executar seus testes utilizando o hibernate.properties específico de testes, com a base de dados na memória?
só criar a SessionFactory apontando pra esse arquivo de properties (ou xml) de testes.
Mas isso você faz nos @Before dos seus testes?
Tenho dúvida de como fazer para que ao rodar os testes ele pegue automaticamente que o properties deve ser o de testes.
ainda no link do calopsita:
extends:
no método prepare vc pode forçar um properties de teste.
no caso do calopsita a gente tem um hibernate.cfg.xml no src/test/resources, que é pego ao invés do main.
ainda no link do calopsita:extends:
no método prepare vc pode forçar um properties de teste.
no caso do calopsita a gente tem um hibernate.cfg.xml no src/test/resources, que é pego ao invés do main.
Muito obrigado Lucas, solução bem simples e eu não tinha me tocado…
abraços