目前,我正在使用Membership.GetUser()
获取当前登录的用户名。然而,这是一个静态的方法,是不可模仿的。有没有其他方法来获得当前登录的用户名是模拟友好的?
FYI:我使用的是Moq框架和NUnit。
发布于 2013-10-20 06:52:07
通常,在这种情况下,您可以创建一个包装器接口,您可以使用该接口对GetUser()方法进行存根。
public interface IMembersipService {
MembershipUser GetUser();
}
public class MembersipService : IMembersipService
{
public MembershipUser GetUser() {
return Membership.GetUser();
}
}
IMembersipService.GetUser()可以根据您的需要进行存根/模拟。
附加注意:成员资格类中还有其他例程,您可能需要访问这些例程。您可以使用相同的接口访问这些方法。在静态成员周围有这样一个包装的接口提供了可测试性。
发布于 2013-10-20 07:08:21
在ASP.NET MVC中,HttpContextBase
被设计为可模拟的,因此您可以使用它的User
属性来获取当前登录的用户。
发布于 2013-10-21 06:35:11
这将使您获得登录用户名:
string userName = User.Identity.Name;
https://stackoverflow.com/questions/19473553
复制相似问题