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