es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Se implementaron pruebas unitarias para EntityManager en Spring Boot?

Estoy intentando implementar una prueba unitaria para una clase usando EntityManager

public class A {
    @PersistenceContext
    private EntityManager entityManager;

    public <T> TypedQuery<T> createTypedQuery(String queryString, Class<T> type) {
    return entityManager.createQuery(queryString, type);
    }
}

¿Cómo puedo implementar una prueba unitaria para el método createTypedQuery?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para implementar pruebas unitarias para el método createTypedQuery en la clase A usando EntityManager, primero deberá crear un EntityManager falso. Esto le permitirá simular el comportamiento de EntityManager sin necesidad de conectarse a una base de datos.

    Puede utilizar un marco de pruebas falsas como Mockito para crear un EntityManager falso y luego probar el comportamiento del método createTypedQuery. Aquí hay un ejemplo de prueba:

    import org.junit.Test;
    import org.mockito.Mockito;
    
    import javax.persistence.EntityManager;
    import javax.persistence.TypedQuery;
    
    import static org.junit.Assert.assertEquals;
    
    public class ATest {
        private EntityManager entityManager = Mockito.mock(EntityManager.class);
    
        @Test
        public void testCreateTypedQuery() {
            A a = new A();
            a.setEntityManager(entityManager);
    
            TypedQuery<string> typedQuery = Mockito.mock(TypedQuery.class);
            Mockito.when(entityManager.createQuery(Mockito.anyString(), Mockito.eq(String.class))).thenReturn(typedQuery);
    
            TypedQuery<string> result = a.createTypedQuery("SELECT s FROM String s", String.class);
    
            assertEquals(typedQuery, result);
        }
    }
    

    Esta prueba crea un EntityManager falso utilizando Mockito y lo configura en una instancia de la clase A. También crea un TypedQuery falso y configura el EntityManager falso para que devuelva esto cuando se llame a createQuery con los argumentos especificados.

    En el método de prueba, llamamos a createTypedQuery con algunos argumentos de muestra y afirmamos que el método devuelve la instancia de TypedQuery falsa que configuramos anteriormente.

    Al usar Mockito para falsificar EntityManager y TypedQuery, podemos probar el comportamiento del método createTypedQuery sin necesidad de conectarnos a una base de datos real. Esto nos permite ejecutar las pruebas de manera rápida y coherente, y aislar el comportamiento del método createTypedQuery del comportamiento de EntityManager.

Comments are closed.