【问题标题】:ASP.NET MVC controller unit testing boggleASP.NET MVC 控制器单元测试难以置信
【发布时间】:2010-09-26 08:03:08
【问题描述】:

我一直在阅读有关单元测试控制器逻辑的正确方法的各种教程。采取以下措施:

    public ActionResult Login()
    {
        //Return the index view if we're still here
        return View();
    }

街上的说法是建立一个类似这样的测试方法:

    [TestMethod]
    public void TestLoginView()
    {
        //Set up an instance of the controller
        var thisController = new UserController();

        //Invoke the index action
        var actionResult = (ViewResult)thisController.Login();

        //Validate the test
        Assert.AreEqual("Login", actionResult.ViewName);
    }

断言按预期工作。然而,这个控制器有一个基类,它覆盖 OnActionExecuting 函数,以设置各种页面元素 chrome(导航元素、面包屑等)。这一点逻辑永远不会受到影响。

我可以轻松地测试控制器中使用的模型,但是我希望在控制器层进行测试。想法?

【问题讨论】:

    标签: asp.net-mvc unit-testing


    【解决方案1】:

    测试框架只调用被测的特定方法,它不会模仿 ASP.NET MVC 框架并触发所有通常会发生的事件。我会在单独的测试中测试您的 OnActionExecuting 逻辑,以确保它有效。此测试应仅测试关联控制器方法中的功能。如果您对触发的其他事件有特定的期望,则需要在调用控制器方法之前在控制器上下文中模拟它们。

    【讨论】:

    • 我有点担心以这种方式短路事件堆栈。
    猜你喜欢
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 2011-01-30
    相关资源
    最近更新 更多