2017-01-11 4 views
2

Я пытался высмеять сессию спящего режима. Это фрагмент кода я попытался:Mocking Hibernate Session

@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 Код:

@Mock 
SessionFactory sessionFactory; 

@InjectMocks 
DraftCampaignModelBuilder draftBuilder; 

private DraftCampaignModel campaignModel; 
private Session session; 

Согласно консоли, сессия завод не является нулевым. Но сеанс hibernate равен null. Может ли кто-нибудь помочь в этом?

Благодаря

+0

Просьба также предоставить ваш макет кода. –

+0

Спасибо. Я добавил. Пожалуйста, посмотрите – user3681970

+0

Итак, вы не издеваетесь над методом 'getCurrentSession()'. Я думаю, вам нужно издеваться над этим методом, чтобы что-то вернуть. – alayor

ответ

2

Я думаю, что вам нужно, чтобы написать это в методе @Before:

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

например

@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"); 
     } 
    } 
} 
+0

Да, более простой подход будет просто @Mock на уровне класса. Спасибо за помощь!!!!! Примите ответ за несколько минут. – user3681970

Смежные вопросы