2014-01-28 4 views
0

Я тестирую модуль с помощью Powermock и Easymock. У меня есть один метод, который внутренне вызывает метод, который возвращает объект Entity Manager (который инициализируется весной). Как мне высмеять эту функцию из моего кода юнита? Есть ли другой подход? В настоящее время я написал код, который выглядит примерно такНе удается высмеять вызов функции Entity Manager

BaseJpaDaoImpl jpaDaoImplMock= EasyMock.createNiceMock(BaseJpaDaoImpl.class); 
EasyMock.expect(jpaDaoImplMock.getEntityManager(true)).andReturn().anyTimes(); 
EasyMock.replay(jpaDaoImplMock); 

BaseJpaDaoImpl содержит метод, который возвращает экземпляр Entity Manager.

protected EntityManager getEntityManager(boolean throwExceptionIfNotSet) { 
    if(throwExceptionIfNotSet && entityManager == null) { 
     logger.error("EM is NULL"); 
     throw new IllegalStateException("Deployment Issue, EM is Null!"); 
    } 
    return entityManager; 
} 

, который выглядит следующим образом

Любая помощь будет оценена Спасибо большое !!

Установка тестового класса

@RunWith(PowerMockRunner.class) 
@PrepareForTest({RequestContextHelperUtil.class, BaseJpaDaoImpl.class,SearchAwareBaseJpaDaoImpl.class}) 
public class InventoryDaoJpaImplTest { 

@Test 
public void ABC() throws Exception { 

    PowerMock.mockStatic(RequestContextHelperUtil.class); 
    BaseJpaDaoImpl jpaDaoImplMock= EasyMock.createNiceMock(BaseJpaDaoImpl.class); 
    EasyMock.expect(jpaDaoImplMock.getEntityManager(true)).andReturn(null).anyTimes(); 
    EasyMock.replay(jpaDaoImplMock); 
+0

Можете ли вы показать весь тестовый класс или, по крайней мере, его начало (определение класса + аннотации)? – Mureinik

+0

в методе andReturn() Мне нужно получить объект, чтобы действительно вернуть что-то и высмеять его – Vihar

ответ

0

Наконец, после многих головы крекинга я понял, что пропустил маленькую точку. Это то, что я сделал

EntityManager em = EasyMock.createNiceMock(EntityManager.class); 
BaseJpaDaoImpl jpaDaoImplMock = EasyMock.createNiceMock(BaseJpaDaoImpl.class); 
EasyMock.expect(jpaDaoImplMock.getEntityManager(true)).andReturn(em).anyTimes(); 
EasyMock.replay(em); 
EasyMock.replay(jpaDaoImplMock); 

Просто дразнил мой ответ

Не лучший из методов, но я получил то, что я искал.

Спасибо всем, кто попробовал !!

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