因此,由于 MS 的所有愚蠢的静态方法,在 MVC 中进行测试是一件很痛苦的事情,但我已经能够解决其中的一些问题——我为成员资格创建了一个接口,以便我可以模拟它,并且大部分工作但我正在使用 ProfileBase在我的自定义 UserProfile 对象中,这当然要困难得多,因为它也有静态方法并且它继承自 ProfileBase。我浪费了整个星期天,不知道如何测试这个。
这是我的 UserPofile 类的样子——它实际上和网上所有的例子一样。
namespace TaskBoardAuth.Models
{
public class UserProfile: ProfileBase
{
public static UserProfile GetUserProfile(string username)
{
return Create(username) as UserProfile;
}
public static UserProfile GetUserProfile()
{
return Create(Membership.GetUser().UserName) as UserProfile;
}
[SettingsAllowAnonymous(false)]
public string FirstName
{
get { return base["FirstName"] as string; }
set { base["FirstName"] = value; }
}
[SettingsAllowAnonymous(false)]
public string LastName
{
get { return base["LastName"] as string; }
set { base["LastName"] = value; }
}
}
}
问题是我无法测试,因为这两个愚蠢的蹩脚静态方法,别介意 profileBase.Create() 是静态的。呃!太白痴了!
无论如何 - 这是我卡住的地方 - 我需要用一种方法来做到这一点。
taskBoardModel.Name = UserProfile.GetUserProfile().FirstName + " " + UserProfile.GetUserProfile().LastName;
我的单元测试当然会失败,因为对 Membership.GetUser() 的调用失败了!呃!!!
有人有什么建议吗?