我想爲下面的代碼編寫單元測試用例,並試圖模擬EntityManager實現。我無法這樣做,並且在測試類中獲得了空實體管理器bean。使用Mockito模擬彈簧的LocalContainerEntityManagerFactoryBean方法?
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;
}
我寫嘲笑它的測試代碼如下:
@InjectMocks
private LocalContainerEntityManagerFactoryBean emMock = new LocalContainerEntityManagerFactoryBean();
...
Mockito.when(localContainerEntityManagerFactoryBean.nativeEntityManagerFactory.createEntityManager()).thenReturn();
我應該返回一個列表,當這個被稱爲輸出所以我需要整個方法被嘲笑。請幫忙 !
@InjectMocks將嘗試在LocalContainerEntityManagerFactoryBean中注入它的依賴項,但是沒有定義任何其他bean,不知道要注入什麼。 –
而不是模擬'LocalContainerEntityManager'修復你的代碼是正確的,這樣你就不必嘲笑它。你的代碼有缺陷。 –