2
EasyMockまたはUnitilsMockを使用して、次のセキュリティ手順を模擬する必要があります。これを達成する方法をお勧めしますか?EasyMockディープスタブ
String id = context.getCallerPrincipal().getName();
この手順はセキュリティに関連しています。ですから、私はPrincipleオブジェクトを作成して2段階の嘲笑をすることはできません。私はEasyMockやUnitilsモックを使用して同様のソリューションを必要とし、
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
SessionContext mockContext;
、次のようにmockitoは簡単なものを扱うことを知っている。しかし。完全なコードは、私はユニットテストしたいが以下に与えられる、
@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
SUTを変更する必要はないと思います。 –