0

目前我正在使用Membership.GetUser()获取当前登录的用户名。然而,这是一个不可模拟的静态方法。有没有其他方法可以获取当前登录的模拟友好的用户名?

仅供参考:我正在使用 Moq 框架和 NUnit。

4

3 回答 3

0

这将为您提供登录的用户名:

string userName = User.Identity.Name;
于 2013-10-21T06:35:11.510 回答
0

在 ASP.NET MVC 中,HttpContextBase被设计为可模拟的,因此您可以使用它的User属性来获取当前登录的用户。

于 2013-10-20T07:08:21.763 回答
0

通常,在这种情况下,您可以创建一个包装器接口,您可以使用它来存根 GetUser() 方法。

public interface IMembersipService {
    MembershipUser GetUser();
}

public class MembersipService : IMembersipService
{
    public MembershipUser GetUser() {
        return Membership.GetUser();
    }
}

IMembersipService.GetUser() 可以根据您的需要进行存根/模拟。

附加说明: Membership类中还有其他例程,您可能需要访问这些例程。您可以使用相同的接口来访问包装这些方法。在静态成员周围有一个这样的包装接口提供了可测试性。

于 2013-10-20T06:52:07.107 回答