使用.net成员资格提供程序进行编程登录

ddc*_*660 7 .net c# membership unit-testing asp.net-membership

我正在尝试对测试中需要当前登录用户的一段代码进行单元测试.使用.Net 2.0成员资格提供程序,如何以编程方式以此用户身份登录此测试?

小智 13

if(Membership.ValidateUser("user1",P@ssw0rd))
        {
            FormsAuthentication.SetAuthCookie("user1",true); 
}
Run Code Online (Sandbox Code Playgroud)


Cra*_*ntz 1

您的代码实际上需要用户通过 ASP.NET 登录,还是只需要 CurrentPrincipal?我认为您不需要以编程方式登录您的网站。您可以创建一个GenericPrincipal,设置所需的属性,并将其附加到例如 Thread.CurrentPrincipal 或模拟的 HttpContext。如果您的代码实际上需要 RolePrincipal 或其他东西,那么我会更改代码以减少与 ASP.NET 成员资格的耦合。

  • 不要直接在被测试的类中调用 Membership.GetUser() 。在创建时为该类提供 IGetUser,使用它代替 Membership.GetUser(),然后制作 IGetUser 的模拟实现以进行测试。 (2认同)