我必须使用EasyMock或UnitilsMock模拟以下安全步骤。你能建议一种实现这一目标的方法吗?
String id = context.getCallerPrincipal().getName();
此步骤与安全性有关。因此,我将无法创建Principle对象并进行两层嘲讽。我知道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();
}
}
-感谢
如果你可以模拟Principal
,那么你可以存根context.getCallerPrincipal()
来返回这个模拟,然后存根mockedPrincipal.getName()
来返回你需要的任何东西。