0

현재 Membership.GetUser()을 사용하여 현재 로그인 한 사용자 이름을 가져 왔습니다. 그러나 이것은 Mockable이 아닌 정적 방법입니다. 모의 친화적 인 현재 로그인 된 사용자 이름을 얻는 다른 방법이 있습니까?asp.net 회원을 위해 현재 로그인 한 사용자 명을 어떻게 구할 수 있습니까?

참고 : 저는 Moq 프레임 워크와 NUnit을 사용하고 있습니다.

+1

Membership.GetUser()를 호출하면 단지 사용자 이름을 사용하려면이 방법은 과잉이다. Controller 또는 View 기본 클래스의 User 속성을 사용하면 IIdentity 인터페이스에서 사용자 이름을 가져올 수 있습니다. –

+0

@MystereMan User 속성은 얼마나 신뢰할 수 있습니까? Membership.GetUser()와 비교하여? – RWendi

+1

음, Membership.GetUser가 동일한 소스를 사용하여 사용자를 조회 했으므로 정확하게 신뢰할 수 있다고 말하고 싶습니다 ... –

답변

0

일반적으로 이와 같은 경우 GetUser() 메서드를 스텁하는 데 사용할 수있는 래퍼 인터페이스를 만들 수 있습니다.

public interface IMembersipService { 
    MembershipUser GetUser(); 
} 

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

IMembersipService.GetUser()는 필요에 따라 스텁/모조가 될 수 있습니다.

추가 참고 사항 : 액세스해야하는 Membership 클래스에는 다른 루틴이 있습니다. 동일한 인터페이스를 사용하여 해당 메소드를 랩핑 할 수 있습니다. 정적 멤버를 중심으로 랩핑 된 인터페이스를 사용하면 테스트 가능성이 제공됩니다.

0

ASP.NET MVC에서 HttpContextBase은 조롱 할 수 있도록 설계되었으므로 User 속성을 사용하여 현재 로그인 한 사용자를 가져올 수 있습니다.

0

이렇게하면 얻을 것이다 사용자 이름으로 로그인 : 그 전체 사용자 개체를 반환하는 데이터베이스에 접속해야하기 때문에

string userName = User.Identity.Name; 
관련 문제