2012-02-05 15 views
1

私が作成しているWebサービスの単体テストを書きたいと思います。問題は、このサービスがメンバーシップと役割提供者に基づく認証と承認を使用していることです。サービス内のメソッドはServiceSecurityContext.Current.Identityを使用して、現在のユーザーに関する情報にアクセスします。IdentityPrincipalを使用するWCFサービスのテスト

このようなサービスをどのようにテストできますか?私は何とかServiceSecurityContextをモックできますか?または、私はテストプロジェクトでHostedServiceを作成し、テスト起動時に実行する必要がありますか?あるいは、私はそれを全く試してはいけませんか?

答えて

1

このクラスのインスタンスを簡単に疑似してサービスに注入するには、このプロパティを自分のインターフェイスの背後に隠すことをおすすめします。これにより、多くのコードファイルに影響を及ぼすことなく、現在のIDを取得するメカニズムを変更することもできます。

public interface IUserProvider 
{ 
    IIdentity Identity { get; } 
} 

public class UserProvider : IUserProvider 
{ 
    public IIdentity Identity 
    { 
    get { return ServiceSecurityContext.Current.Identity; } 
    } 
} 
+0

Iは、ユーザが特定の役割を有しており、この値はから取られるかどうかをテストするために、「[PrincipalPermission(SecurityAction.Demand、ロール= 『myRoleの』)]」のようなannotionsを使用するため、残念ながら、これは、動作しません現在のスレッドに格納されている情報 – domderen

+0

分離フレームワークMolesはここで役に立ちます:http://research.microsoft.com/en-us/projects/moles/ – Javi

関連する問題