还有其他人对内置的 ASP.NET 单元测试框架感到沮丧吗?我遇到的问题是在 MVC3 应用程序中针对 ASP.NET 的成员资格提供程序进行连接和测试。看起来数据库连接尚未建立,或者当我正常运行应用程序时存在一组不同的规则。这是两种情况。
1) 尝试按名称查找现有用户:
单元测试 -
[TestMethod]
public void RegisterTest()
{
AccountController target = new AccountController();
RegisterModel model = new RegisterModel() { UserName = "existinguser", Email = "email@test.com", Password = "Password", ConfirmPassword = "Password" };
actual = target.Register(model);
}
来自 AccountController 的代码块 -
MembershipCreateStatus createStatus;
MembershipUserCollection members = Membership.FindUsersByName(model.UserName);
MembershipUser user = null;
if (members.Count > 0)
createStatus = MembershipCreateStatus.DuplicateUserName;
结果 - 当我进入此代码时,即使我知道该用户在系统中,成员数组也是空的。在单元测试应用程序中建立与会员商店的连接是否有一些技巧?我尝试使用 datasource 属性但没有成功。
2)尝试创建一个新的会员帐户:单元测试与上面相同,但是我传递了一个尚未在系统中的新用户。当我进入控制器并进入下一行时,它给了我一个“无效问题”的成员资格创建状态。这看起来很奇怪,因为在运行此直播时我没有这个问题,并且可以按原样创建帐户。
user = Membership.CreateUser(model.UserName, model.Password, model.Email, string.Empty, string.Empty, true, null, out createStatus);
在此先感谢您的帮助。我真的很想先做这个测试方法,但是使用内置的测试框架使它变得更加困难。当然,有一种方法可以连接到所有单元测试的数据库(不为每个测试提供连接)并模拟我通过浏览器执行的相同操作。