Reto Testing unitario de componentes y servicios

Código
Básico
SpringBoot
Curso de SpringBoot
5 min
200 XP
Actualizado: 02/09/2025

¡Programa y certifícate!

Asistente de IA
Solución de código
Certificado
Empezar ejercicio

Ejercicio de programación: Reto Testing unitario de componentes y servicios

Este ejercicio de programación está diseñado para poner a prueba tus conocimientos en SpringBoot. Es un ejercicio básico perfecto para principiantes que están aprendiendo los fundamentos.

Tipo: Ejercicio de código 5 minutos estimados 200 puntos de experiencia

Información adicional del ejercicio

Crear un test unitario básico para un servicio usando @ExtendWith(MockitoExtension.class) con mocks y verificaciones

Contenido del ejercicio

Implementa un test unitario para el servicio ProductoService que tiene un método obtenerPrecioConDescuento(Long id, Double porcentajeDescuento). El servicio depende de un ProductoRepository que tiene un método findById(Long id) que devuelve un Optional<Producto>.

El método obtenerPrecioConDescuento debe:

  1. Buscar el producto por ID usando el repositorio
  2. Si el producto existe, calcular el precio con descuento: precio * (1 - porcentajeDescuento / 100)
  3. Si el producto no existe, lanzar una ProductoNotFoundException

Debes crear un test que:

  • Use @ExtendWith(MockitoExtension.class) (sin cargar contexto de Spring)
  • Configure un mock del repositorio para devolver un producto con precio 100.0
  • Llame al método con un descuento del 20%
  • Verifique que el resultado es 80.0
  • Verifique que se llamó al método findById del repositorio exactamente una vez

Utiliza las anotaciones @Mock para el repositorio y @InjectMocks para el servicio. Emplea when().thenReturn() para configurar el comportamiento del mock y verify() para verificar las interacciones.

Lección relacionada

Este ejercicio está relacionado con la lección "Testing unitario de componentes y servicios" de SpringBoot. Te recomendamos revisar la lección antes de comenzar.

Ver lección relacionada

Más ejercicios de SpringBoot

Explora más ejercicios de programación en SpringBoot para mejorar tus habilidades y obtener tu certificación.

Ver más ejercicios de SpringBoot

Solución al ejercicio de programación en SpringBoot

Contenido bloqueado

¡Desbloquea la solución completa!

Completa el ejercicio de programación en SpringBoot para acceder a la solución paso a paso, explicaciones detalladas y mejores prácticas.

solution.js
JavaScript
1 function solveChallenge ( input ) {
2 // Algoritmo optimizado O(n log n)
3 const data = parseInput ( input );
4 const sorted = data . sort (( a , b ) => a - b );
5
6 // Aplicar técnica de dos punteros
7 let left = 0 , right = sorted . length - 1 ;
8 const result = [];
9
10 while ( left < right ) {
11 const sum = sorted [ left ] + sorted [ right ];
12 if ( sum === target ) {
13 result . push ([ sorted [ left ], sorted [ right ]]);
14 left ++; right --;
15 } else if ( sum < target ) {
16 left ++;
17 } else {
18 right --;
19 }
20 }
21
22 return result ;
23 }
Código completo
Explicaciones
Mejores prácticas
+1.200 developers han resuelto este ejercicio de programación

Practica con ejercicios de programación en SpringBoot

Mejora tus habilidades con cientos de ejercicios de práctica, recibe retroalimentación instantánea y obtén tu certificación cuando estés listo.

Asistente de IA

Aprende de tus errores

Progreso

Mide tu avance

Certificación

Valida tus habilidades

Únete a miles de desarrolladores mejorando sus habilidades en SpringBoot

⭐⭐⭐⭐⭐
4.9/5 valoración