Unit Testing MVC 4 RedirectToAction
Ich versuche zu unit-testen Sie die Umleitung von meine controller in MVC 4 .Net 4.5. Hier ist ein Beispiel:
[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");
}
Hier ist der controller:
[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);
}
Die Ausgabe der variable result
im Unit Test ist null
. Ich fand diesen code von jemandem, der arbeitete auf einem MVC 2 Projekt, und es schien für ihn zu arbeiten. Hat sich etwas geändert mit MVC 4?
Vielen Dank im Voraus!
- Sind Sie sicher, dass die Aktion tatsächlich gibt RedirectToAction("Index", "Home")? Es sollte eine gewisse Logik in das Register Aktion. Wenn es gibt eine andere Art von Ergebnis, und Sie versuchen, es zu machen, als RedirectToRouteResult, als Sie bekommen null.
- Ich habe eine RedirectToRouteResult-Objekt zurück, wenn ich es versucht habe. Sind Sie sicher, dass Sie Ihren controller sieht genauso aus wie das?
- Ich denke, man kann immer ein ViewResult
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese Hoffnung wird für Sie nützlich