🚀 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:

  1. Velocidade: Não abre um processo de navegador pesado.
  2. Isolamento: Permite mocar o banco de dados via @MockBean.
  3. Precisão: Valida atributos específicos do objeto ModelAndView.

TIP

Integração Fluida: O Spring Boot Testing Starter já inclui o json-path e hamcrest, 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.


⬅️ Capítulo Anterior | Próximo Capítulo ➡️