¿Mock a EntiityManager es posible con Spring?

Hola buenas tardes a todos.

Hay una duda que tengo y es referente a la forma en que debo inyectar EntityManager dentro de una clase Test, para ello estoy utilizando JUnit y Mockito.

por ejemplo:
ClaseRepositoryImpl => Es la clase que quiero testear
EntityManager => Es lo que necesito falsear

public class ClaseRepositoryImplTest{
    @InjectMocks
    public ClaseRepositoryImpl cr;
   
    @Mock
    public EntityManager em;

    @Before
    public void setUp(){
        MockitoAnnotations.initMocks(this);
    }

        @Test
    public void getCatalogoEjemploTest() {
        List<Ejemplo> listado = this.getCatalogoEjemplo();  //Tengo un método private que me devuelve una Lista de Objetos de tipo Ejemplo
        String nameStoreProcedure = "SP_GET_CAT_EJEMPLO";
       
        Query query = entityManager.createStoredProcedureQuery(nameStoreProcedure, Ejemplo.class);
        Mockito.when(query.getResultList()).thenReturn(listado);
    }

}

El problema está en que cuando le paso la herramienta debug con Eclipse, me doy cuenta que en la línea query.getResultList() me indica lo siguiente: query = null, ¿Cuál es forma correcta de falsear EntityManager?, Cabe señalar que estoy usando JPA. Espero que alguien haya tenido el mismo problema para poder orientarme, muchas gracias.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

Sería así

@RunWith(MockitoJunitRunner.class)
public class ClaseRepositoryImplTest{
    @InjectMocks
    public ClaseRepositoryImpl cr;
   
    @Mock
    public EntityManager em;

        @Test
    public void getCatalogoEjemploTest() {
        final List<Ejemplo> listado = this.getCatalogoEjemplo();
        final String nameStoreProcedure = "SP_GET_CAT_EJEMPLO";

        Mockito.when(query.getResultList()).thenReturn(listado);
       
        Query query = entityManager.createStoredProcedureQuery(nameStoreProcedure, Ejemplo.class);

       Assert.assertNotNull(query);

        Mockito.verify(query).getResultList()).thenReturn(listado);      

    }

}

El Mockito.when ... debe ir antes de que ejecutes el método que deseas probar.