最終你可以做什麼(根據jflood.net的評論)是分開你的顧慮。所以目前你有兩個主要問題(你可能甚至可能進一步分解它,但我們也應該避免過度工程) - 向用戶呈現數據並驗證用戶的輸入。
您的ASP.NET WebForm代碼處理關注點#1。爲了分離驗證問題,您應該創建一個處理驗證邏輯的新驗證類。像
public class Validator
{
public bool ValidateEmail(string email)
{
bool valid = false;
//Run RegEx validation and set the valid flag
return valid;
}
}
東西現在在你的頁面負載,可以utiliize這個新類
protected void Page_Load(object sender, EventArgs e)
{
Validator validator = new Validator();
string email = Request.Form["EmailInput"];
bool isEmailValid = validator.ValidateEmail(email);
if (isEmailValid)
Response.Write("Email is valid");
}
注意這多少有些僞代碼,因爲這是家庭作業,我不想鍵入了全解。
現在您已將驗證關注分爲自己的類。這使得單元測試更容易理解和更輕鬆。
您現在要編寫Validator類的單元測試,特別是在這種情況下,爲ValidateEmail。
下面是一個例子
[Test]
public void ValidateGoodEmail()
{
Validator validator = new Validator();
bool shouldBeTrue = validator.ValidateEmail("[email protected]");
Assert.AreEqual(true, shouldBeTrue);
}
[Test]
public void ValidateBadEmail()
{
Validator validator = new Validator();
bool shouldBeFalse = validator.ValidateEmail("[email protected]");
Assert.AreEqual(false, shouldBeFalse);
}
記住在單元測試你只是測試不同的邏輯流。你不必測試任何輸入,所以我在這裏測試了一個錯誤的驗證與一個給定的錯誤的電子郵件地址和一個真正的驗證與一個很好的電子郵件地址。
希望這有助於
如果你想「單元測試」表示邏輯,你需要單獨您的問題,像MVP的模式將做到這一點 –
u能請詳細 – crazyTechie