EasyMock または UnitilsMock を使用して、次のセキュリティ ステップをモックする必要があります。これを達成する方法を提案してください。
String id = context.getCallerPrincipal().getName();
このステップはセキュリティに関連しています。したがって、プリンシパル オブジェクトを作成して 2 層のモックを作成することはできません。私は、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();
}
}
-ありがとう