【发布时间】:2009-10-22 04:33:50
【问题描述】:
我在 Accounts Controller -> Registration ActionValidateRegistation 函数中添加了功能来测试用户注册表单中的空白。如果用户输入的电子邮件地址已经在系统中,我现在想向表单抛出错误。我在 ValidateRegistration 函数末尾添加了检查重复电子邮件地址的函数。
我使用 linq 查询数据库以创建用户列表并检查电子邮件是否已被使用,这在运行时运行良好。我创建了一个 Visual Basic 测试,在注册操作期间测试重复电子邮件地址的用户对象(用户名、密码等)。如何避免 ValidateRegistration 查询数据库并创建用户列表(这是我在运行时想要的),而是在单元测试期间向 ValidateRegistration 提供假用户对象?
示例代码:帐户控制器
public ActionResult Register(string username... string password...)
{
//Call the ValidateRegistration(string username... string password...);
//Add user if ValidateRegistration checks have passed
}
public ValidateRegistration(字符串用户名...字符串密码...) { //如果为空则检查用户名 // ModelState.AddModelError(用户名为空)
//检查密码长度 // ModelState.AddModelError(密码太短消息)
//列出 lstUsers = GetUsers(); //检查邮箱地址是否已经被使用 // ModelState.AddModelError(邮箱已经使用)
//如何对上面的邮箱地址检查进行单元测试?
}
示例代码:单元测试
public void RegisterPostReturnsViewIfFirstnameNotSpecified()
{
// Arrange
AccountController controller = GetAccountController();
// Act
ViewResult result = (ViewResult)controller.Register(string username... string password...)
// Assert
Assert.AreEqual(6, result.ViewData["PasswordLength"]);
Assert.AreEqual(See if error message is equal);
}
【问题讨论】: