Spring Boot - Test Controller - TestRestTemplate

Olá pessoal.

Estou tentando remover um item através do teste abaixo. Consigo verificar que o objeto existe no banco, recupero as informações mas quando rodo o teste nada acontece (o item permanece no banco).

@Test
public void deveRemover_UmaPauta() {	
	// Define o item que deve ser removido.
	Pauta pauta = new Pauta("Pauta - Juros", new Associado("Matheus","607.989.726-10","sim"));
	// Se já existir o item retorna com o ID gerado pelo banco.
	ResponseEntity<Pauta> pautaCompletaComId = this.testRestTemplate.getForEntity("/pauta/associado/cpf/607.989.726-10", Pauta.class);
	
	// Extraindo para o objeto Pauta
	Pauta p2 = new Pauta();
	p2 = pautaCompletaComId.getBody();
	
	//Tenta deletar
	HttpEntity<Pauta> request = new HttpEntity<>(p2);	
	this.testRestTemplate.delete("/pauta/", request, Pauta.class); 
}

Se o teste estiver junto com a aplicação não faz sentido utilizar o RestTemplate para chamar sua própria aplicação, RestTemplate é utilizado para se comunicar com clients terceiros!
Neste caso crie testes para validar os services, se quiser validar a entrada e saída de dados considere utilizar o RestAssured, que já tem este propósito.

1 curtida

Para testar seus controllers, use o MockMvc do Spring.

1 curtida

Obrigado pelas dicas pessoal. Sou iniciante e ainda estou perdido em relação a qual tecnologia utilizar.

No final das contas consegui resolver usando TestRestTemplate, vou deixar a solução aqui caso alguém precise:

> 	@Test
> 	public void deveRemover_UmaPauta() {	
> 		Pauta pauta = new Pauta("Pauta - Juros", new Associado("Matheus","607.989.726-10","sim"));
> 		pauta.setIdPauta("5f989130bd2f01333dc28438");
> 		ResponseEntity<Pauta> exchange = this.restTemplate.exchange("/pauta/{id}" , HttpMethod.DELETE, null, Pauta.class, pauta.getIdPauta());
> 		Assertions.assertThat(exchange.getStatusCodeValue()).isEqualTo(200);
> 	}