У меня есть проект MVC4 с Azure. Я хочу написать простой тест, чтобы проверить логин пользователя. Моя Войти действие определяется какИспытание модуля с параметрами контроллера
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
и мой метод тест
[TestMethod]
public void UserValidLoginTest()
{
// Arrange
AccountController controller = new AccountController();
// Act
LogOnModel model = new LogOnModel()
{
UserName = "[email protected]",
Password = "pass1234"
};
var result = controller.LogOn(model, null) as RedirectToRouteResult;
// Assert
Assert.IsNotNull(result);
Assert.AreEqual(result.RouteValues["action"], "Index");
}
У меня есть 2 проблемы, первая в том, что
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
возвращение NullReferenceException, а также
Url.IsLocalUrl(returnUrl)
делает то же самое. Как я могу это решить? Как я могу проверить его? Я мог бы также написать интеграционный тест с Selenium или Moq, но я не уверен, как тестировать его с помощью Azure. Любые идеи, как подойти к этой проблеме?
Тестирование статических классов сложно. Можете ли вы использовать интерфейсы для этих объектов? Затем издеваются над интерфейсами. – Joe
Можем ли мы сделать пример? Я не нашел полезного примера, как это сделать. – FrEaKmAn