我是單元測試的新手,我正在嘗試測試一些我一直在寫的.NET會員資料。如何單元測試Asp.net會員?
所以我想檢查我的VerifyUser
方法,檢查用戶憑據是否有效。
因此,這是什麼樣子:
public bool VerifyUser(string userName, string password)
{
bool valid = Membership.ValidateUser(userName, password);
return valid;
}
現在每次我跑我的單元測試失敗的時間。我知道我傳遞了正確的證書和內容。然後它就明白了,也許我的測試項目(與我的真實項目在同一解決方案下)可能需要自己的web.config
文件以及連接字符串和內容。或者是一個應用程序配置文件,因爲它是一個應用程序庫項目。
那麼,我只是從我的真實項目複製web.config
文件,並稱它爲一天?或者我應該只是從中取出零件?或者我剛剛離開。
我的數據庫正在使用與我的數據庫合併的.net成員資格的自定義數據庫。所以在我的配置文件中,我必須指定一個ManagerProvider和一個roleProvider。
這是我的單元測試看起來像
[Test]
public void TestVerifyUser()
{
AuthenticateUser authenitcate = new AuthenticateUser();
bool vaild = authenitcate.VerifyUser("chobo3", "1234567");
Assert.That(vaild, Is.True);
}
而且後來我在我的asp.net MVC的ActionResult方法之一(登錄查看確切)我有這樣的:
FormsAuthentication.RedirectFromLoginPage(loginValidation.UserName,rememberMe);
那麼現在我該如何編寫一個單元測試來完成用戶會做的事情。假設他們從主頁開始,然後點擊登錄頁面併成功登錄。我希望他們重定向到主頁。
我不知道如何在代碼中表示。我很確定RedirectFromLoginPage
的工作原理,現在我正在測試。我正在測試這樣的事實,即在登錄ActionResult
方法中可能發生3件事情。
- 用戶登錄並被髮回,他們從哪裏來。
- 用戶未能登錄並被髮送回
LoginView
並看到錯誤消息。 - 用戶試圖轉到安全並已重定向到登錄頁面。如果登錄成功,將通過ReturnUrl重定向回安全頁面。
所以我想做一個測試,看看這些工作是否應該。這就是爲什麼我需要讓用戶像主頁一樣來看看它們是否會在稍後重定向到它,如果它們來自一個安全頁面,那麼它們將重定向回到稍後。
我也順便使用NUnit 2.5和VS2008 Pro。
這就是我想要測試的。我在我試圖查看用戶是否有效的部分(if語句)。我不知道如何測試它。
public ActionResult Login(string returnUrl, FormCollection form, bool rememberMe)
{
LoginValidation loginValidation = new LoginValidation();
try
{
UpdateModel(loginValidation, form.ToValueProvider());
}
catch
{
return View("Login");
}
if (ModelState.IsValid == true)
{
bool valid = authenticate.VerifyUser(loginValidation.UserName, loginValidation.Password);
if (valid == false)
{
ModelState.AddModelError("frm_Login", "Either the Password or UserName is invalid");
}
else if (string.IsNullOrEmpty(returnUrl) == false)
{
/* if the user has been sent away from a page that requires them to login and they do
* login then redirect them back to this area*/
return Redirect(returnUrl);
}
else
{
FormsAuthentication.RedirectFromLoginPage(loginValidation.UserName, rememberMe);
}
}
return View("Login");
}
對不起,我不明白 我讀到的嘲諷「過度配置的方法的公約」我有書。它與使用接口或類似的東西? 我發現這個鏈接,但我想它不會爲我工作,因爲我使用Nunit和他使用MbUnit? http://aspalliance.com/1590 – chobo2 2009-06-19 14:23:46