测试使用IdentityPrincipal的WCF服务

时间:2012-02-05 01:06:21

标签: c# wcf unit-testing

我想为我正在创建的Web服务编写一些单元测试。问题是,此服务使用基于成员资格和角色提供程序的身份验证和授权。服务中的方法使用ServiceSecurityContext.Current.Identity来访问有关当前用户的信息。

现在我不确定如何测试这样的服务?我可以以某种方式模拟ServiceSecurityContext吗?或者我可能只是在我的测试项目中创建HostedService,并在测试启动时运行它?或者也许我根本不应该测试它?

1 个答案:

答案 0 :(得分:1)

我建议将此属性隐藏在您自己的接口后面,以便轻松模拟并将此类的实例注入您的服务。这还可以让您更改检索当前标识的机制,而不会影响许多代码文件。

public interface IUserProvider 
{
  IIdentity Identity { get; }
}

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