我想为我正在创建的Web服务编写一些单元测试。问题是,此服务使用基于成员资格和角色提供程序的身份验证和授权。服务中的方法使用ServiceSecurityContext.Current.Identity来访问有关当前用户的信息。
现在我不确定如何测试这样的服务?我可以以某种方式模拟ServiceSecurityContext吗?或者我可能只是在我的测试项目中创建HostedService,并在测试启动时运行它?或者也许我根本不应该测试它?
答案 0 :(得分:1)
我建议将此属性隐藏在您自己的接口后面,以便轻松模拟并将此类的实例注入您的服务。这还可以让您更改检索当前标识的机制,而不会影响许多代码文件。
public interface IUserProvider
{
IIdentity Identity { get; }
}
public class UserProvider : IUserProvider
{
public IIdentity Identity
{
get { return ServiceSecurityContext.Current.Identity; }
}
}