Hibernate GroovyTestCase: не удается выявить ошибку в приведенном ниже коде..

#hibernate #groovy #easymock

#переход в спящий режим #groovy #easymock

Вопрос:

Я получаю сбой теста в приведенном ниже тесте. В частности, он жалуется на «ожидать (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) является сериализуемым, представляющим идентификатор вновь созданного X, поэтому он должен возвращать идентификатор вашего HibernateTransitInfo, а не самого HibernateTransitInfo.

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

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

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

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