Ejercicio de programación con SpringBoot: Reto test controlador REST
Código
0h 5m
Practica creando un test unitario para un controlador REST en Spring Boot que gestiona usuarios con endpoint GET y validación JSON.
Crea una clase de test para un controlador REST que gestiona productos. El controlador tiene un endpoint GET /api/productos/1
que devuelve un producto en formato JSON con los campos id
, nombre
y precio
.
Debes implementar:
- Una clase de test anotada con
@WebMvcTest
que especifique el controladorProductoController
- Inyectar
MockMvc
usando@Autowired
- Crear un mock del servicio
ProductoService
usando@MockBean
- Implementar un método de test que:
- Configure el mock para que
obtenerProductoPorId(1L)
devuelva un producto con id=1, nombre="Laptop" y precio=999.99 - Realice una petición GET a
/api/productos/1
aceptando JSON - Verifique que el status sea 200 OK
- Verifique que el content-type sea JSON
- Use
jsonPath
para validar que el camponombre
sea "Laptop" - Use
jsonPath
para validar que el campoprecio
sea 999.99
Empezar creando la clase de test con las anotaciones necesarias, luego inyectar las dependencias y finalmente implementar el método de test con todas las verificaciones usando mockMvc.perform()
y andExpect()
.
Este es el código que debes testear:
// Clase User
class User {
private Long id;
private String name;
private String email;
// constructores...
// getter y setters...
}
// Controlador UserController
@RestController
class UserController {
@GetMapping("/users/{id}")
public ResponseEntity<User> getUserById(@PathVariable Long id) {
// Usuario hardcodeado como se especifica en el enunciado
User user = new User(1L, "Juan Pérez", "juan@email.com");
return ResponseEntity.ok(user);
}
}
Todos los ejercicios de programación de SpringBoot
Evalúa tus conocimientos con ejercicios de programación en SpringBoot de tipo Test, Puzzle, Código y Proyecto con VSCode.
Crear entidades JPA
Código
Controladores Spring MVC
Código
Asociaciones de entidades JPA
Código
Creación de entidades
Test
Reto servicio PedidoService
Código
Reto controlador REST
Código
Consultas JPQL
Código
Anotaciones JPA
Puzzle
Relación ManyToOne con Tarea y Proyecto
Proyecto
CRUD Customers Spring MVC + Spring Data JPA
Proyecto
Backend API REST con Spring Boot
Proyecto
Filtrar categorías por nombre
Código
Reto controlador MVC Categoría
Código
Entidad y repositorio
Código
Métodos derivados y consultas JPQL en repositorios
Código
Tutorial para resolver este ejercicio de programación
SpringBoot
Testing controladores REST con json
Testing con Spring Test