1

我创建了一个MVC应用程序,并且我已经设置了Roger Martin's sqlite Providers来代替默认提供程序。我很好奇我会如何去测试这些单元。单元测试MVC应用程序中的Sqlite成员提供程序

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

我可以看到单元测试可以确定成功或失败,但不是因特定原因失败,除非我检查输出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; 
    } 
+0

你们是不是单元测试中SQLite的成员资格提供或控制器的代码? – 2009-12-11 15:55:46

+0

现在,SQLite成员资格提供程序。我想确保帐户注册因特定和有效的原因而被拒绝。我还没有开始编写控制器,但是我没有看到为它编写测试的问题。 – splatto 2009-12-11 16:15:19

回答

0

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

值将是下列之一:

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