EasyMock深层存根

时间:2012-03-02 23:06:38

标签: mocking mockito easymock unitils

我必须使用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();
   }
}

-Thanks

1 个答案:

答案 0 :(得分:1)

如果您可以模拟Principal,那么您可以存根context.getCallerPrincipal()返回此模拟,然后存根mockedPrincipal.getName()以返回您需要的任何内容。