2012-03-02 13 views
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

答えて

1

あなたがPrincipalを模擬することができます場合は、何でもあなたを返すようにmockedPrincipal.getName()スタブそして、このモックを返すようにcontext.getCallerPrincipal()をスタブすることができますそれが必要です。

+0

ご意見ありがとうございます。私は、クラスの下のテストを 'Principal principal = context.getCallerPrincipal();に変更する必要があります。 String caller = principal.getName(); '私のテストでPricipalをモックし、テスト対象のクラスに注入しますか? – Bala

+0

SUTを変更する必要はないと思います。 –

関連する問題