unit-testing - 单元测试 MVC 4 RedirectToAction

标签 unit-testing asp.net-mvc-4 asp.net-4.5

我正在尝试在 MVC 4 .Net 4.5 中对 Controller 的重定向进行单元测试。这是一个例子:

    [TestMethod]
    public void Register_PassValidModel_RedirectToHomeIndexShouldBeTrue()
    {
        //Arrange
        var registerModel = new RegisterModel
        {
            Email = "validEmailAddress@domain.com",
            Password = "password"
        };

        //Assign
        var result = _controller.Register(registerModel) as RedirectToRouteResult;

        //Assert
        result.RouteValues["Action"].ShouldBeEqual("Index");
        result.RouteValues["Controller"].ShouldBeEqual("Home");
    }

这是 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);
    }

单元测试中变量result的问题为null。我从从事 MVC 2 项目的人那里找到了这段代码,它似乎对他有用。 MVC 4 有什么变化吗?

提前致谢!

最佳答案

试试这个希望它对你有用

 var result= (RedirectToRouteResult)controller.Register(registrModel);

           result.RouteValues["action"].Equals("Index");
           result.RouteValues["controller"].Equals("Home");

           Assert.AreEqual("Index", action.RouteValues["action"]);
           Assert.AreEqual("Home", action.RouteValues["controller"]);

关于unit-testing - 单元测试 MVC 4 RedirectToAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12503403/

相关文章:

c# - 在网络服务器和本地主机上保存和访问文件

elmah - HttpTaskAsyncHandler 和 HTTP 上下文

unit-testing - 如何用 jest 和 enzyme 测试 websocket?

unit-testing - 什么是 ON 单元?

unit-testing - 单元测试 - 如果函数在生产代码中仅调用一次,则在两个测试用例中调用该函数

c# - 如何使 Controller 名称连字符 "-"分隔?

javascript - Chart.JS 我想为每个 Y 轴值网格线颜色设置不同的颜色

unit-testing - 为什么即使使用 Spocks 的 Mock() 模拟了底层 Controller ,此方法仍返回 null?

asp.net - 如何在我的 .NET Framework 4.5 应用程序/站点中使用 HttpClient?

json - 寻找通过 razor @Html.Raw(Json.Encode(Model)) 将 json 数据从 asp.net mvc 4.5 传递到 angular 2 组件的解决方案