Я новичок в модульном тестировании, и я пытаюсь проверить некоторые из своих компонентов членства в .NET, которые я пишу.
Итак, я пытаюсь проверить мой метод VerifyUser
, который проверяет правильность учетных данных пользователей.
Итак, это выглядит так:
public bool VerifyUser(string userName, string password)
{
bool valid = Membership.ValidateUser(userName, password);
return valid;
}
И теперь каждый раз, когда я запускаю свой unit test, он терпит неудачу. Я знаю, что я передаю правильные верительные грамоты и прочее. Тогда мне стало понятно, что, возможно, моему тестовому проекту (который находится под тем же самым решением, что и мой реальный проект) может понадобиться собственный web.config
файл со строкой подключения и т.д. Или файл конфигурации приложения может быть, так как это проект библиотеки приложений.
Итак, просто скопирую файл web.config
из моего реального проекта и назову его днем? Или я должен брать только оттуда? Или я просто ушел.
Моя база данных использует пользовательскую базу данных, в которой член .net объединяется с моей базой данных. Поэтому в моем файле конфигурации мне нужно было указать ManagerProvider и roleProvider.
Вот как выглядит мой unit test
[Test]
public void TestVerifyUser()
{
AuthenticateUser authenitcate = new AuthenticateUser();
bool vaild = authenitcate.VerifyUser("chobo3", "1234567");
Assert.That(vaild, Is.True);
}
Также позже у меня есть один из моих методов asp.net mvc ActionResult (точнее, для входа в систему). У меня есть это:
FormsAuthentication.RedirectFromLoginPage(loginValidation.UserName, rememberMe);
Итак, как я могу написать unit test, который будет делать то, что сделает пользователь. Скажите, что они начинаются с домашней страницы, затем нажмите на страницу входа и войдите в систему успешно. Я хочу, чтобы они перенаправлялись на домашнюю страницу.
Я не уверен, как представить это в коде. Я уверен, что RedirectFromLoginPage
работает, и теперь это то, что я действительно тестирую. Я проверяю факт, что у меня есть 3 вещи, которые могут произойти в методе login ActionResult
.
- Пользователь регистрируется и отправляется туда, откуда он пришел.
- Пользователь не может войти в систему и отправлен обратно в
LoginView
и видит сообщения об ошибках. - Пользователь попытался перейти на безопасный и был перенаправлен на страницу входа в систему. Если логин успешно будет перенаправлен обратно на защищенную страницу через ReturnUrl.
Итак, я хочу сделать тест, чтобы проверить, работают ли они так, как должны. Поэтому поэтому мне нужно, чтобы пользователь пришел с такой же домашней страницы, чтобы увидеть, будут ли они перенаправлены обратно к нему позже, и если они появятся на защищенной странице, они снова перенаправляются к этому позже.
Также я использую NUnit 2.5 и VS2008 Pro.
Это то, что я пытаюсь проверить. Я в той части, где я пытаюсь проверить, является ли пользователь действительным или нет (оператор if). Я не знаю, как это проверить.
public ActionResult Login(string returnUrl, FormCollection form, bool rememberMe)
{
LoginValidation loginValidation = new LoginValidation();
try
{
UpdateModel(loginValidation, form.ToValueProvider());
}
catch
{
return View("Login");
}
if (ModelState.IsValid == true)
{
bool valid = authenticate.VerifyUser(loginValidation.UserName, loginValidation.Password);
if (valid == false)
{
ModelState.AddModelError("frm_Login", "Either the Password or UserName is invalid");
}
else if (string.IsNullOrEmpty(returnUrl) == false)
{
/* if the user has been sent away from a page that requires them to login and they do
* login then redirect them back to this area*/
return Redirect(returnUrl);
}
else
{
FormsAuthentication.RedirectFromLoginPage(loginValidation.UserName, rememberMe);
}
}
return View("Login");
}