Hibernate+GroovyTestcase: невозможно определить ошибку в приведенном ниже коде.
Я получаю тестовый провал на тест ниже. В частности, он жалуется на "ожидаемо (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)
}
}
1 ответ
Решение
Возвращаемый тип session.save(X) - это Serializable, представляющий идентификатор вновь созданного X, поэтому он должен возвращать идентификатор вашего HibernateTransitInfo, а не сам HibernateTransitInfo.
Если бы мне пришлось угадывать, я бы сказал, что вы хотите сделать:
expect(mockSession.save(hibernateTransitInfo)).andReturn("1")
Тем не менее, я почти уверен, что это также сработает, так как вы не заботитесь о возвращаемом значении:
expect(mockSession.save(hibernateTransitInfo)).andReturn(null)