Hibernate + GroovyTestcase:无法找出下面代码中的错误..

时间:2011-11-08 17:49:30

标签: hibernate groovy easymock

我在下面的测试中遇到测试失败。特别是它抱怨“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)
     }
}

1 个答案:

答案 0 :(得分:1)

session.save(X)的返回类型是一个Serializable,表示新创建的X的标识符,因此它应该返回HibernateTransitInfo的id,而不是HibernateTransitInfo本身。

如果我不得不猜,我会说你想做:

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

但是,我很确定这也可行,因为您似乎并不关心返回值:

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