2
我剛剛完成了一個基本的asp成員資格到我的MVC項目中,我正在尋找一些測試。我嘲笑提供者有一些最初的問題,但現在已經排序了。很明顯,當提供者被嘲笑時,沒有數據存在,也不能添加任何數據,但是配置文件不能被直接模擬,因爲每次需要用戶配置文件時都會創建配置文件。我不知道如何處理測試這些(顯然)當配置文件被稱爲它返回null。測試自定義用戶配置文件以便與ASP成員資格一起使用
例如:
使用DI我的倉庫被注入:
public AccountMembershipService(MembershipProvider provider)
{
_provider = provider ?? Membership.Provider;
}
而且讓我們的例子中,創建用戶方法
public MembershipCreateStatus CreateUser(string userName, string password, string email, string passwordQuestion, string passwordAnswer)
{
if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName");
if (String.IsNullOrEmpty(password)) throw new ArgumentException("Value cannot be null or empty.", "password");
if (String.IsNullOrEmpty(email)) throw new ArgumentException("Value cannot be null or empty.", "email");
MembershipCreateStatus status;
_provider.CreateUser(userName, password, email, passwordQuestion, passwordAnswer, true, null, out status);
if (status == MembershipCreateStatus.Success)
{
UserProfile profile = UserProfile.GetProfile(userName);
profile.IPAddress = "0.0.0.0";
profile.Save();
}
return status;
}
的.CreateUser完美的作品(據因爲嘲笑),但是當涉及到GetProfile顯然沒有配置文件存在,所以它只是錯誤。關於我如何能夠進行測試的任何想法?
我一直盯着這個好幾個小時了,任何幫助都會非常感謝!
爲什麼不像抽象'MembershipProvider'一樣抽象'UserProfile'? – Steven 2011-03-03 10:11:48
這是我最初的方法,但是因爲配置文件是在方法內部創建的,所以每個控制器不只有一個特定的UserProfile,它需要採取周界來初始化它。 - 但是你的權利,我大概可以抽象一些,但僅僅面對它似乎有點不必要。我看着它! – Henry 2011-03-03 10:36:49
在我看來,你需要注入'IUserProfileFractory'。 – Steven 2011-03-03 10:56:50