2013-05-15 24 views
0

我必須在本單元測試中檢查重複的電子郵件和用戶名。與另一位開發人員交談時,他說我應該檢查重複的電子郵件地址和用戶名是否嵌套。我不知道我是否正確理解他,但這是我的。其他開發人員目前不在,所以我不能要求驗證。我認爲這種格式是不正確的。有什麼建議?在單元測試中檢查重複的電子郵件和用戶名

 try 
     { 

      AsaMembershipProvider prov = this.GetMembershipProvider(); 


      MembershipCreateStatus status; 
      MembershipUser user = prov.CreateUser("UserX", "12345", "[email protected]", "", "", true, null, out status); 


      user = prov.GetUser("UserX", false); 


      var isAuthenticated = prov.ValidateUser(user.UserName, "12345"); 
      Assert.IsTrue(isAuthenticated); 
      Assert.AreEqual(user.UserName, "UserX"); 
      Assert.AreEqual(user.Email, "[email protected]"); 

      try 
      { 

       prov.DeleteUser("UserX", true); 

       user = prov.GetUser("UserX", false); 

       Assert.AreEqual(null, user); 
       user = prov.GetUser("UserX", false); 


       Assert.AreEqual(status, MembershipCreateStatus.Success); 
      } 
      catch (Exception ex) 
      { 
       LogMessage(ex); 
       Assert.Fail(ex.Message); 
      } 


      prov.DeleteUser("UserX", true); 

      user = prov.GetUser("UserX", false); 

      Assert.AreEqual(null, user); 


     } 
     catch (Exception ex) 
     { 
      LogMessage(ex); 
      Assert.Fail(ex.Message); 
     } 

    } 
+1

你的問題有點含糊,但是*是一個嵌套的try catch(try/catch中的try/catch),如果這真的是你所要求的。您的實施有問題嗎?錯誤/意外結果? – tnw

+0

我打算在這裏做兩個假設:1)用戶正在存儲在數據庫中。 2)用戶表在電子郵件上具有唯一的索引。您應該使用同一封電子郵件兩次創建一個用戶,並期望您的數據庫客戶端能夠通過唯一索引引發適當的異常。 – allonhadaya

+0

正如我向他解釋的那樣,當嵌套的try catch發現重複的電子郵件時應該拋出一個異常,然後測試應該繼續,但它會停在那裏。 – user216672

回答

0

將在try塊中的代碼來調用Assert.Throws<T>

Assert.Throws<Exception>(() => { 
    // attempt to create a duplicate user. 
}, "Exception thrown when creating duplicate user."); 

更改Exception你想到的是創建一個副本時拋出的精確異常類型。

相關問題