2013-05-15 5 views
0

В этом модульном тесте я должен проверить дублирующее электронное письмо и имя пользователя. Говоря с другим разработчиком, он сказал, что я должен проверить дублирующее письмо и имя пользователя во вложенном try catch. Я не уверен, что правильно его понял или нет, но вот что у меня есть. Другой разработчик не доступен прямо сейчас, поэтому я не могу попросить его проверить. Я думаю, что этот формат неверен. Любой совет?проверка дубликата электронной почты и имени пользователя в модульном тесте

 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

Как мне объяснялось, вложенная попытка catch должна генерировать исключение, когда он находит дубликат электронной почты, а затем тест должен продолжаться, но он останавливается. – user216672

ответ

0

Переместить код в блоке попытаться вызова Assert.Throws<T>:

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

Изменение Exception для точного типа исключения вы ожидаете быть выброшен, когда создается дубликат.

Смежные вопросы