30.14. Desarrollo de API REST con Spring Boot: pruebas unitarias y de integración

Al desarrollar una API REST con Spring Boot, es esencial garantizar la calidad del código y la confiabilidad del punto final. Una forma eficaz de lograr este objetivo es implementar pruebas unitarias y de integración. En esta sección, exploraremos cómo crear y ejecutar estas pruebas dentro de un proyecto Spring Boot, asegurando que su API REST funcione como se esperaba.

Pruebas unitarias

Las pruebas unitarias son la base de cualquier estrategia de prueba en el desarrollo de software. Son rápidos, aislados y se centran en una pequeña parte del código, como métodos o clases. En el contexto de Spring Boot, generalmente utilizamos marcos como JUnit y Mockito para escribir pruebas unitarias.

JUnidad

JUnit es un marco de pruebas para el lenguaje de programación Java que nos permite escribir y ejecutar pruebas repetibles. Con JUnit, podemos asegurarnos de que los métodos de nuestras clases funcionen como se esperaba.

Mockito

Mockito es un marco que le permite crear objetos simulados en pruebas unitarias. Esto es útil cuando necesitamos probar la lógica de una clase sin depender de sus dependencias externas, como bases de datos u otros servicios.

Ejemplo de prueba unitaria


@SpringBootTest
prueba de servicio de usuario de clase pública {

    @MockBean
    repositorio de usuarios privado repositorio de usuarios;

    @autocableado
    Servicio de usuario privado Servicio de usuario;

    @Prueba
    vacío público cuandoSaveUser_thenSuccess() {
        Usuario usuario = nuevo Usuario("John Doe", "john.doe@example.com");
        Mockito.when(userRepository.save(usuario)).luegoReturn(usuario);

        Usuario creado = userService.createUser(usuario);

        afirmarQue(created.getName()).isEqualTo(user.getName());
        afirmarQue(created.getEmail()).isEqualTo(user.getEmail());
    }
}

En el ejemplo anterior, estamos probando el método createUser de UserService. Usamos @MockBean para simular el UserRepository y @Autowired para inyectar la instancia de UserService que queremos probar. Con Mockito simulamos el comportamiento del método save del repositorio para devolver el usuario que estamos creando. De esta forma podremos comprobar si el servicio funciona correctamente sin tener que interactuar con la base de datos.

Pruebas de integración

Las pruebas de integración son importantes para garantizar que las diferentes partes del sistema funcionen juntas. En Spring Boot, podemos usar Spring MVC Test Framework para simular llamadas HTTP a la API y verificar el comportamiento de la aplicación en su conjunto.

Marco de prueba Spring MVC

Este marco le permite escribir pruebas que envían solicitudes HTTP al DispatcherServlet (el controlador frontal Spring MVC) y verificar las respuestas. Con esto, es posible probar controladores, rutas y estados de respuesta sin necesidad de implementar la aplicación en un servidor web real.

Ejemplo de prueba de integración


@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@AutoConfigureMockMvc
clase pública UserControllerIntegrationTest {

    @autocableado
    MockMvc privado MockMvc;

    @Prueba
    vacío público cuandoGetUser_thenStatus200() lanza una excepción {
        simulacroMvc.perform(get("/usuarios/1"))
               .andExpect(estado().isOk())
               .andExpect(jsonPath("$.name").value("John Doe"))
               .andExpect(jsonPath("$.email").value("john.doe@example.com"));
    }
}

En el ejemplo anterior, utilizamos @SpringBootTest con la opción webEnvironment para iniciar el contexto Spring Boot y hacer que un servidor web esté disponible en un puerto aleatorio. Con @AutoConfigureMockMvc, Spring Boot configura automáticamente MockMvc, que es un punto central para las pruebas de integración en Spring MVC. Usamos MockMvc para simular una solicitud GET al endpoint /users/1 y verificar si la respuesta tiene el estado HTTP 200 (OK), además de verificar si el contenido de la respuesta contiene los datos esperados.

Consideraciones finales

Las pruebas unitarias y de integración son fundamentales en el desarrollo de API REST con Spring Boot. Ayudan a garantizar que cada parte del código funcione de forma aislada y que todas las partes funcionen juntas como se espera. Utilizando marcos como JUnit y Mockito, junto con las capacidades de Spring MVC Test Framework, puede crear un conjunto sólido de pruebas que aumentarán la confianza en su código y reducirán la posibilidad de errores en producción.

Además, una estrategia de pruebas bien definida facilita el mantenimiento y la evolución de la aplicación, ya que cualquier cambio que rompa la funcionalidad existente será identificado rápidamente mediante las pruebas. Así que invierte tiempoy recursos para escribir y mantener pruebas de calidad, y su API REST con Spring Boot será mucho más sólida y confiable.

Ahora responde el ejercicio sobre el contenido:

¿Cuál de las siguientes afirmaciones sobre el desarrollo de API REST con Spring Boot es verdadera según el texto proporcionado?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Desarrollo de API REST con Spring Boot: documentación de API con Swagger/OpenAPI

Siguiente página del libro electrónico gratuito:

140Desarrollo de API REST con Spring Boot: documentación de API con Swagger/OpenAPI

4 minutos

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.