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)
Другие вопросы по тегам