1
我使用的Mockito做我的DAO測試,但是當我打電話其中有一個會話的方法save
:Session session = (Session) getEntityManager().getDelegate();
,但session
來null
, 我不知道發生了什麼事,有人可以幫助我?會議即將null進行的Mockito測試DAO
Mockito.when(MyDAOImplMock.salvarOuEditar(object)).thenReturn(object);
objectTest = MyDAOImpl.salvarOuEditar(object);
Mockito.verify(MyDAOImplMock).salvarOuEditar(object);
MyDAOImplMock
是我的DAO實現的模擬,並MyDAOImpl
是我的DAO實現的實例。
@Override
@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
public T salvarOuEditar(T entidade) {
Session session = (Session) getEntityManager().getDelegate();
session.saveOrUpdate(entidade);
return entidade;
}
你似乎對你的模擬對象將要做什麼感到困惑。你有一個真實的DAO實例,以及一個模擬實例。您似乎在檢查在實際實例上調用方法時,在模擬實例上調用相同的方法。我想不出爲什麼這個測試會通過任何理由。對於你關於'Session'的問題,我會給你一個很好的答案,但首先你需要闡明'getEntityManager()'返回的實體管理器如何進入DAO實現?它是一個構造函數的參數,還是存在一個setter方法?請澄清。 –
你好,我在我的DAO界面中用@Autowired解決了這個問題,而不是創建一個新的實例,現在我已經有了很好的覆蓋範圍,我將發佈正確的代碼。 –
我可以在原始問題代碼下面發佈正確的代碼嗎? –