ASP.NET MVC控制器单元测试boggle

时间:2008-12-10 21:03:03

标签: asp.net-mvc unit-testing

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

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

街道上的Word是用以下类似的测试方法:

    [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(导航元素,面包屑等)。这一点逻辑永远不会被击中。

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

1 个答案:

答案 0 :(得分:5)

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