2
我必須使用EasyMock或UnitilsMock來模擬以下安全步驟。你能否建議一種方法來實現這一目標?EasyMock深存根
String id = context.getCallerPrincipal().getName();
此步驟與安全性有關。所以我將無法創建一個Principle對象並進行兩層模擬。我知道,很容易的Mockito處理此類東西如下,
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
SessionContext mockContext;
但是,我需要使用EasyMock的或Unitils模擬類似的解決方案。完整的代碼,我想單元測試在下面給出,
@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
感謝您的建議。我應該不得不將測試中的類更改爲Principal Principal = context.getCallerPrincipal(); String caller = principal.getName();'然後在我的測試中模擬Pricipal並將其注入到被測試的類中? – Bala 2012-03-03 10:59:30
我不認爲你需要改變SUT。 – 2012-03-04 07:23:59