Estoy intentando probar la redirección de mi controlador en MVC 4 .Net 4.5. He aquí un ejemplo:Prueba unitaria MVC 4 RedirectToAction
[TestMethod]
public void Register_PassValidModel_RedirectToHomeIndexShouldBeTrue()
{
//Arrange
var registerModel = new RegisterModel
{
Email = "[email protected]",
Password = "password"
};
//Assign
var result = _controller.Register(registerModel) as RedirectToRouteResult;
//Assert
result.RouteValues["Action"].ShouldBeEqual("Index");
result.RouteValues["Controller"].ShouldBeEqual("Home");
}
aquí es el controlador:
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
var userToRegister = new User { Email = model.Email, Password = model.Password };
var service = new UserService(_userRepository);
User user = service.RegisterUser(userToRegister);
if (user.UserErrorMessages.Count != 0)
{
user.UserErrorMessages.ForEach(x => ModelState.AddModelError("", x));
return View(model);
}
SetCookie(model.Email);
return RedirectToAction("Index", "Home");
}
return View(model);
}
La cuestión de la variable result
en la prueba unitaria es null
. Encontré este código de alguien que estaba trabajando en un proyecto de MVC 2 y parecía funcionar para él. ¿Ha cambiado algo con MVC 4?
¡Gracias de antemano!
¿Seguro acción realmente vuelve RedirectToAction ("Índice", "Inicio")? Debe haber algo de lógica en la acción Registrar. Si devuelve otro tipo de resultado e intenta hacerlo como RedirectToRouteResult, obtendrá nulo. – Felix
Obtuve un objeto RedirectToRouteResult cuando lo intenté. ¿Estás seguro de que tu controlador se ve así? – Rickard
Supongo que puede estar obteniendo un ViewResult – VJAI