Mocking Hibernate Session

為{幸葍}努か 提交于 2019-12-10 18:37:07

问题


I was trying to mock hibernate session. This is the code snippet I tried:

@Before
public void setUp() {
    campaignModel = DraftTestHelper.buildDraftModel();
    if(sessionFactory != null) {
        System.out.println("Session Factory not null");
    }
    else
        System.out.println("Session Factory is null");
    session = sessionFactory.getCurrentSession();

    if(session != null) {
        System.out.print("Not null");
    }
    else 
        System.out.println("Null");

}

Mock Code:

@Mock
SessionFactory sessionFactory;

@InjectMocks
DraftCampaignModelBuilder draftBuilder;  

private DraftCampaignModel campaignModel;
private Session session;

According to console, session factory is not null. But hibernate session is null. Can anyone please help on this?

Thanks


回答1:


I think you need to write this in your @Before method:

when(sessionFactory.getCurrentSession()).thenReturn(hibernateSession);

e.g.

@Mock
private HibernateSession hibernateSession;

@Before
public void setUp() {
    when(sessionFactory.getCurrentSession()).thenReturn(hibernateSession);

    campaignModel = DraftTestHelper.buildDraftModel();
    if(sessionFactory == null) {
        System.out.println("Session Factory is null");
    }
    else {
        System.out.println("Session Factory is not null");
        session = sessionFactory.getCurrentSession();

        if(session != null) {
            System.out.print("Session is not null");
        }
        else {
            System.out.println("Session is null");
        }
    }
}


来源:https://stackoverflow.com/questions/41583346/mocking-hibernate-session

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!