當前我正在使用Membership.GetUser()
獲取當前登錄的用戶名。但是,這是一個不可嘲弄的靜態方法。有沒有其他的方式來獲取當前登錄的模擬友好用戶名?如何獲取,嘲笑,當前登錄用戶名爲asp.net成員資格?
僅供參考:我正在使用Moq框架和NUnit。
當前我正在使用Membership.GetUser()
獲取當前登錄的用戶名。但是,這是一個不可嘲弄的靜態方法。有沒有其他的方式來獲取當前登錄的模擬友好用戶名?如何獲取,嘲笑,當前登錄用戶名爲asp.net成員資格?
僅供參考:我正在使用Moq框架和NUnit。
通常,在這種情況下,您可以創建一個包裝器接口,您可以使用它來存根GetUser()方法。
public interface IMembersipService {
MembershipUser GetUser();
}
public class MembersipService : IMembersipService
{
public MembershipUser GetUser() {
return Membership.GetUser();
}
}
IMembersipService.GetUser()可以根據您的需要存根/模擬。
附加說明:Membership類中還有其他例程,您可能需要訪問該例程。您可以使用相同的界面來訪問這些方法。在靜態成員周圍有一個這樣的包裝接口提供了可測試性。
在ASP.NET MVC中,HttpContextBase
被設計成可嘲笑的,因此您可以使用其User
屬性來獲取當前登錄用戶。
這將讓你的登錄用戶名:
string userName = User.Identity.Name;
調用Membership.GetUser()只是爲了獲得用戶名的方式矯枉過正,因爲有打數據庫返回一個完整的用戶對象。如果使用Controller或View基類的User屬性,則可以從IIdentity接口獲取用戶名。 –
@MystereMan用戶屬性有多可靠?與Membership.GetUser()相比? – RWendi
那麼,因爲Membership.GetUser使用相同的來源來查找用戶,我會說完全可靠... –