vendredi 22 juillet 2016

Mock spring's LocalContainerEntityManagerFactoryBean method using Mockito?

I am trying to write unit testcases for the below code and am trying to mock the EntityManager implementation. I am unable to do so and I get null entity manager bean in my test class.

public List<Object[]> getForecastResults(String query, String siteId, long startTime, long endTimestamp)
{   
    List<Object[]> result = null;
    EntityManager em = null;
    try {           
        query = String.format(query, startTime, endTimestamp, siteId);
        logger.debug(" Query : " + query);
        em = localContainerEntityManagerFactoryBean.nativeEntityManagerFactory.createEntityManager();
        EntityTransaction et = em.getTransaction();
        et.begin();
        result = (List<Object[]>) em.createNativeQuery(query).getResultList();
        //logger.debug("Results from the query : " + query + " are :" + Utility.toJsonString(result, true));
    } catch (Exception ex) {            
        ex.printStackTrace();
        logger.error("Error Occurred while fetching the data for the query : " + query);            
    }           
    return result;
}

The test code I have written to mock it is below:

@InjectMocks
    private LocalContainerEntityManagerFactoryBean emMock = new LocalContainerEntityManagerFactoryBean();

...

Mockito.when(localContainerEntityManagerFactoryBean.nativeEntityManagerFactory.createEntityManager()).thenReturn();

I should return a list when this is called as output So i need the whole method to be mocked. Please help !

Aucun commentaire:

Enregistrer un commentaire