【问题标题】:Unit Testing Sqlite Membership Provider in MVC appMVC 应用程序中的单元测试 Sqlite 成员资格提供程序
【发布时间】:2009-12-10 20:13:55
【问题描述】:

我创建了一个 MVC 应用程序,并设置了 Roger Martin's sqlite Providers 来代替默认的 Providers。我很好奇我将如何对这些进行单元测试。

下面是一个精简的方法,它有许多验证,只有一个仍然存在。除其他外,我想编写测试以确保如果用户名已被占用则无法注册,并且如果用户名是免费的(并且其他验证通过)则可以注册,等等。

我可以看到单元测试如何确定成功或失败,但不会因为特定原因而失败,除非我检查输出 MembershipCreateStatus 参数,但我不确定是否有更好的方法。此外,我需要为对象 providerUserKey 提供什么?任何见解都会非常有帮助。

  public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
  {
   //some validations, and then:

   MembershipUser u = GetUser(username, false);
   if (u == null)
   {
    ///register user
           status = MembershipCreateStatus.Success;
           return GetUser(username, false);
   }
   else
   {
    status = MembershipCreateStatus.DuplicateUserName;
   }

   return null;
  }

【问题讨论】:

  • 您是在尝试对 SQLite 成员资格提供程序或控制器中的代码进行单元测试吗?
  • 目前,SQLite 成员资格提供程序。我想确保帐户注册因特定且有效的原因而被拒绝。我还没有开始编写控制器,但我认为为它编写测试没有问题。

标签: asp.net-mvc unit-testing model-view-controller nunit membership


【解决方案1】:

使用out MembershipCreateStatus status 输出变量来确定失败的原因(重复的用户名、无效的密码、重复的电子邮件等)。

该值将是以下之一:

MembershipCreateStatus.Success
MembershipCreateStatus.DuplicateUserName
MembershipCreateStatus.DuplicateEmail
MembershipCreateStatus.InvalidPassword
MembershipCreateStatus.InvalidEmail
MembershipCreateStatus.InvalidAnswer
MembershipCreateStatus.InvalidQuestion
MembershipCreateStatus.InvalidUserName
MembershipCreateStatus.ProviderError 
MembershipCreateStatus.UserRejected

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 2011-07-17
    相关资源
    最近更新 更多