🚀 7.4 Testes de Tela: Simulação com MockMvc
Testar interfaces visualmente é lento e custoso. Na Engenharia Premium, utilizamos o MockMvc para testar nossos Controllers e a geração dos templates Thymeleaf de forma programática, garantindo que o HTML gerado contém os dados esperados.
🤖 Simulação de Requisições de Elite
O MockMvc simula o servidor web Tomcat, permitindo que enviemos requisições GET/POST e validemos o status code, a view retornada e o conteúdo do modelo.
Exemplo: Testando a Lista de Clientes
@WebMvcTest(ClienteController.class)
class ClienteControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private ClienteRepository repository;
@Test
@DisplayName("Deve carregar a página de listagem com sucesso")
void deveListarClientes() throws Exception {
// Mocking do Repositório
when(repository.findAll()).thenReturn(Collections.emptyList());
mockMvc.perform(get("/clientes"))
.andExpect(status().isOk())
.andExpect(view().name("clientes/list"))
.andExpect(model().attributeExists("clientes"));
}
}Por que não usar Selenium?
Embora o Selenium seja poderoso para testes End-to-End, o MockMvc é preferível para testes de lógica de controle porque:
- Velocidade: Não abre um processo de navegador pesado.
- Isolamento: Permite mocar o banco de dados via
@MockBean. - Precisão: Valida atributos específicos do objeto
ModelAndView.
TIP
Integração Fluida: O Spring Boot Testing Starter já inclui o
json-pathehamcrest, permitindo que você valide o conteúdo do HTML ou JSON com pouquíssimas linhas de código.
No próximo capítulo, encerraremos este módulo e nos prepararemos para o próximo grande desafio: Expondo Serviços REST de Alta Performance.