Hibernate + GroovyTestcase: невозможно определить ошибку в приведенном ниже коде. - PullRequest
3 голосов
/ 08 ноября 2011

Я получаю тестовый сбой в тесте ниже.В частности, он жалуется на «ожидаемо (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 Ответ

1 голос
/ 09 ноября 2011

Возвращаемый тип session.save (X) - это Serializable, представляющий идентификатор вновь созданного X, поэтому он должен возвращать идентификатор вашего HibernateTransitInfo, а не сам HibernateTransitInfo.

Если бы мне пришлосьдумаю, я бы сказал, что вы хотите сделать:

expect(mockSession.save(hibernateTransitInfo)).andReturn("1")

Тем не менее, я вполне уверен, что это также сработает, так как вы не заботитесь о возвращаемом значении:

expect(mockSession.save(hibernateTransitInfo)).andReturn(null)
...