Я новичок в модульном тестировании и пытаюсь протестировать некоторые из моих материалов .NET, которые я пишу.
Итак, я пытаюсь проверить мой VerifyUser
метод, который проверяет, действительны ли учетные данные пользователей.
Так вот как это выглядит:
public bool VerifyUser(string userName, string password)
{
bool valid = Membership.ValidateUser(userName, password);
return valid;
}
И теперь каждый раз, когда я запускаю свой модульный тест, он не проходит. Я знаю, что я передаю правильные полномочия и прочее. Затем до меня дошло, что, возможно, моему Тестовому проекту (который находится в том же решении, что и мой настоящий проект) может понадобиться собственный файл web.config
со строкой соединения и прочим. Или файл конфигурации приложения, может быть, так как это проект библиотеки приложений.
Так я просто скопирую файл web.config
из моего реального проекта и назову его день? Или я должен только брать части от этого? Или я просто далеко.
Моя база данных использует пользовательскую базу данных с членством .net, объединенным с моей базой данных. Поэтому в моем конфигурационном файле я должен был указать ManagerProvider и roleProvider.
Вот так выглядит мой модульный тест
[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, запомнитьMe);
Итак, как мне написать модульный тест, который будет делать то, что будет делать пользователь. Допустим, они начинаются с домашней страницы, затем нажимают на страницу входа и успешно входят в систему. Я хочу, чтобы они были перенаправлены на домашнюю страницу.
Я не уверен, как представить это в коде. Я почти уверен, что RedirectFromLoginPage
работает, и это то, что я действительно тестирую. Я проверяю тот факт, что у меня есть 3 вещи, которые могут произойти в методе входа в систему 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");
}