我在下面的测试中遇到测试失败。特别是它抱怨“expect(mockSession.save(hibernateTransitInfo))。andReturn(hibernateTransitInfo)”并且它抱怨“不兼容的返回类型”
测试代码
void testCreateTransitFileInfo()
{
HibernateTransitInfo hibernateTransitInfo =
new HibernateTransitInfo(relationshipId: "12345")
expect(mockSessionFactory.currentSession).andReturn(mockSession)
expect(mockSession.save(hibernateTransitInfo)).andReturn(hibernateTransitInfo)
replayAll()
transitFileDao.createHibernateTransitInfo(hibernateTransitInfo)
verifyAll()
}
Actual DaoImplementation
@Repository("transitFileDao")
class TransitFileDaoImpl implements TransitFileDao{
@Autowired
SessionFactory sessionFactory
Session getCurrentSession()
{
return sessionFactory.currentSession
}
void createHibernateTransitInfo(HibernateTransitInfo hibernateTransitInfo)
{
currentSession.save(hibernateTransitInfo)
}
}
答案 0 :(得分:1)
session.save(X)的返回类型是一个Serializable,表示新创建的X的标识符,因此它应该返回HibernateTransitInfo的id,而不是HibernateTransitInfo本身。
如果我不得不猜,我会说你想做:
expect(mockSession.save(hibernateTransitInfo)).andReturn("1")
但是,我很确定这也可行,因为您似乎并不关心返回值:
expect(mockSession.save(hibernateTransitInfo)).andReturn(null)