2

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

-谢谢

4

1 回答 1

1

如果你可以模拟Principal,那么你可以存根context.getCallerPrincipal()返回这个模拟,然后存根mockedPrincipal.getName()返回你需要的任何东西。

于 2012-03-03T05:38:25.717 回答