目前我正在使用Membership.GetUser()
来获取当前登录的用户名。然而,这是一种静态方法,它不是Mockable。有没有其他方法可以获得模拟友好的当前登录用户名?
仅供参考:我正在使用Moq框架和NUnit。
答案 0 :(得分:0)
通常,在这种情况下,您可以创建一个包装器接口,您可以使用它来存根GetUser()方法。
public interface IMembersipService {
MembershipUser GetUser();
}
public class MembersipService : IMembersipService
{
public MembershipUser GetUser() {
return Membership.GetUser();
}
}
IMembersipService.GetUser()可以根据您的需要进行存根/模拟。
附加说明:Membership类中还有其他例程,您可能需要访问这些例程。您可以使用相同的界面来访问这些方法。像静态成员这样的包装界面提供了可测试性。
答案 1 :(得分:0)
在ASP.NET MVC中,HttpContextBase
被设计为可模拟的,因此您可以使用其User
属性来获取当前登录的用户。
答案 2 :(得分:0)
这将为您登录用户名:
string userName = User.Identity.Name;