Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] @MockBean no se puede usar en las ultimas versiones de Spring Boot

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidadBuena tarde

Al intentar hacer de @MockBean uso genera el error presente en la imagen

lo pude solucionar creando una configuración de test

package med.voll.api.controller;

import med.voll.api.domain.consulta.ReservaDeConsultas;
import org.mockito.Mockito;
import org.springframework.boot.test.context.TestConfiguration;
import org.springframework.context.annotation.Bean;
@TestConfiguration
public class TestConfig {
    @Bean
    public ReservaDeConsultas reservaDeConsultas() {
        return Mockito.mock(ReservaDeConsultas.class);
    }

}

y llamarlo en la clase ConsultaControllerTest

@SpringBootTest(classes = {TestConfig.class}) @Autowired private ReservaDeConsultas reservaDeConsultas;

quisiera saber si esta es la forma indicado o se puede hacer de otra manera mas optima Quedo atento Agradezco de antemano la atención prestada

1 respuesta

¡Hola Juan!

Entiendo que estás teniendo problemas con el uso de @MockBean en las últimas versiones de Spring Boot. La solución que has implementado con la creación de una configuración de test parece ser una forma válida de abordar el problema. Al utilizar @TestConfiguration y @Bean para crear un mock de ReservaDeConsultas, estás simulando el comportamiento de este componente, lo cual es una práctica común en pruebas unitarias.

Si bien esta solución es válida, también puedes considerar el uso de la anotación @MockBean directamente en tu clase de prueba ConsultaControllerTest. Esta anotación te permite crear y registrar mocks en el contexto de Spring para ser utilizados en las pruebas.

Aquí te muestro un ejemplo de cómo podrías utilizar @MockBean en tu clase de prueba:

@SpringBootTest
@AutoConfigureJsonTesters
class ConsultaControllerTest {

    @Autowired
    private MockMvc mvc;

    @MockBean
    private ReservaDeConsultas reservaDeConsultas;

    // ...resto de tu código de prueba
}

Al utilizar @MockBean, Spring Boot se encargará de crear un mock de ReservaDeConsultas y lo registrará en el contexto de la aplicación para que pueda ser inyectado en la clase de prueba.

Espero que esta información te sea de ayuda. Si tienes alguna otra pregunta o necesitas más claridad sobre algún punto, no dudes en preguntar.

¡Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!