2013-10-20 110 views
0

當前我正在使用Membership.GetUser()獲取當前登錄的用戶名。但是,這是一個不可嘲弄的靜態方法。有沒有其他的方式來獲取當前登錄的模擬友好用戶名?如何獲取,嘲笑,當前登錄用戶名爲asp.net成員資格?

僅供參考:我正在使用Moq框架和NUnit。

+1

調用Membership.GetUser()只是爲了獲得用戶名的方式矯枉過正,因爲有打數據庫返回一個完整的用戶對象。如果使用Controller或View基類的User屬性,則可以從IIdentity接口獲取用戶名。 –

+0

@MystereMan用戶屬性有多可靠?與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; 
相關問題