单元测试控制器是否有意义

时间:2009-11-22 14:29:07

标签: asp.net-mvc unit-testing

我知道微软和MvcContrib在启用开发人员单元测试控制器方面做了很多尝试。但最近我一直想知道我们是否应该抛弃单元测试控制器,并让它们进行集成测试。我有两个原因:  

  • 一个好的控制器不应该有任何逻辑,或者非常基本的最小逻辑。当然不是商业逻辑。它应该小巧紧凑,并依赖于应用程序服务来完成它需要做的事情。如果这些服务经过充分测试,我还有什么可以在我的控制器中进行测试?
  • 控制器基本上是用户与您的应用程序交互的方式。这就像用户界面一样,很容易发生变化。例如,我可能有一天决定特定动作属于不同的控制器。可以肯定的是,如果我们采用“无控制器动作”的范例,这一点可能不那么强大。
  • 我离开基地吗?看看其他人的代码,我非常看到人们对单元测试控制器的看法。

    2 个答案:

    答案 0 :(得分:2)

    我也不总是对最简单的MVC控制器进行单元测试,但我发现了一些测试有用的情况(至少在Java Spring MVC中):

    1. 当我创建一个修改用户会话中某些内容的控制器时(例如,添加在整个站点中使用的会话属性)。它只是验证正确的数据是否已添加到会话中。
    2. 当控制器必须执行身份验证/授权检查以确定要显示的视图时。我添加了2个测试用例,其中1个用户会话具有正确的凭据(断言它们被转发到所需的视图),1个用户会话没有(断言它们被转发到登录视图)。

    答案 1 :(得分:1)

    查看this post了解详情。

    简而言之,测试控制器非常适合检查(进程)是否正常工作,但我认为它们在调试方面几乎没有价值。

    我更喜欢对我的(单位)进行单元测试,以便我知道每个人都会得到预期的结果。

    然后我会按顺序测试单位,最后是控制器,但只是为了完整性。

    从你的单位编写的propper测试可以让你获得更好的调试信息,而不是来自你的控制器的高级消息。