Я новичок в модульном тестировании, и я пытаюсь проверить часть своего членства в .NET, которое я пишу.Как тестировать членство в Asp.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, memMe);
Итак, как я могу написать модульный тест, который будет делать то, что сделает пользователь. Скажите, что они начинаются с домашней страницы, затем нажмите на страницу входа и войдите в систему успешно. Я хочу, чтобы они перенаправлялись на домашнюю страницу.
Я не уверен, как представить это в коде. Я почти уверен, что работает 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");
}
К сожалению, я не понимаю «соглашение по конфигурации подхода» я прочитал о насмехаясь в книга у меня есть.Это как-то связано с использованием интерфейсов или что-то в этом роде? Я нашел эту ссылку, но я думаю, что это не сработает для меня, так как я использую Nunit, и он использует MbUnit? http://aspalliance.com/1590 – chobo2
@ chobo2 Я расскажу о том, как его использовать. Разумные фреймворки определенно имеют склонность к использованию интерфейсов и не без оснований. Использование интерфейсов обеспечивает хорошую развязку. Однако вам не нужно использовать интерфейсы во всех насмешливых фреймворках. Кроме того, NUnit и MbUnit похожи во многих отношениях, поэтому что-то, что сделано в MbUnit, скорее всего, имеет параллель с NUnit. Стоит делать некоторые исследования. – Joseph
Хорошо Спасибо. Я до сих пор не понимаю интерфейсы и действительно не знаю, когда дело доходит до модульного тестирования. Так что, надеюсь, одна из этих фреймворков сделает это немного легче. Какой из них вы рекомендуете? Я вижу, что «Moq» использует linq sytanx, поэтому я не уверен, правильно ли это, если это будет полезно для меня, поскольку я мало знаю о linq. Также как эти рамки работают с nunit? Как я все еще использую nunit для запуска моего теста или что? – chobo2