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
InformationsquelleAutor user962926 | 2012-09-19
Schreibe einen Kommentar