2012-03-02 8 views
2

Я должен высмеять следующий шаг безопасности с помощью EasyMock или UnitilsMock. Не могли бы вы предложить способ достижения этого?Глубокие заглушки EasyMock

String id = context.getCallerPrincipal().getName(); 

Этот шаг связан с безопасностью. Поэтому я не смогу создать объект «Принцип» и сделать насчет двухуровневого уровня. Я знаю, что Mockito обрабатывает такие вещи легко, как следует,

@Mock(answer = Answers.RETURNS_DEEP_STUBS) 
SessionContext mockContext; 

Но мне нужно аналогичное решение с использованием EasyMock или Unitils Mock. Полный код, я хочу единицу тест дается ниже,

@Override 
@PermitAll 
public List<Employee> findAll() { 
    boolean isAdmin = context.isCallerInRole(Roles.ADMIN); 
    if (isAdmin) { 
     return super.findAll(); 
    } else { 
     String id = context.getCallerPrincipal().getName(); 
     Query query = getEntityManager().createNamedQuery("findEmployeeById"); 
     query.setParameter("employeeId", id); 
     return query.getResultList(); 
    } 
} 

-Спасибо

ответ

1

Если вы можете дразнить Principal, то вы можете окурок context.getCallerPrincipal() вернуть этот макет, затем заглушки mockedPrincipal.getName() вернуть все, что вы нужно это.

+0

Спасибо за ваше предложение. Должен ли я изменить тест класса на «Основной принцип = context.getCallerPrincipal(); String caller = main.getName(); 'затем высмеивает Pricipal в моем тесте и вводит его в тест класса? – Bala

+0

Я не думаю, что вам нужно изменить SUT. –

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