EasyMock глубокие заглушки
Я должен издеваться над следующим шагом безопасности с помощью EasyMock или UnitilsMock. Не могли бы вы предложить способ достижения этого?
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()
вернуть все, что вам нужно.