【问题标题】:Is unit testing skinny controllers really necessary?单元测试瘦控制器真的有必要吗?
【发布时间】:2015-09-21 16:43:31
【问题描述】:

我想知道你们是否对控制器进行单元测试,以及这是否是 TDD 环境中的常见做法。

我所拥有的是 瘦控制器,它们基​​本上调用 业务层 获取逻辑和数据,然后 填充本地 ViewModel 以传递到视图。

我对业务层进行了单元测试,但我想知道测试这些瘦控制器是否仍然有意义,或者它真的没有必要,除非你有一个包含大量逻辑的胖控制器。

请告诉我你的想法。

谢谢。

【问题讨论】:

    标签: asp.net-mvc unit-testing tdd


    【解决方案1】:

    为类创建一个 UT,而他所做的只是将呼叫从一个点转发到另一个点,这不是一个好主意。原因很简单:它只是不值得......你不会从这些测试中获得任何好处,而且你将不得不随着时间的推移维护这些测试,而你不会验证任何行为(只是结构...)

    那么我如何覆盖这些单位?方法也很简单;只需将它们作为使用它们的东西的一部分进行测试。

    现在回到最初的问题...我发现测试我的瘦控制器的方法是通过组件/集成测试。我从 BL 开始,当我必须将 BL 与控制器耦合时,我创建一个组件/集成测试,然后以控制器实现结束任务。

    【讨论】:

      【解决方案2】:

      根据经验,我不会费心去测试没有任何逻辑的东西。仅仅调用另一个对象几乎不能算作逻辑 IMO。按顺序调用多个其他对象更值得商榷。

      如果我使用由外向内的方法,我会做的就是在我进一步向食物链上游并实现真正的依赖项之前,通过删除其依赖项(业务服务、映射器等)来对控制器进行 TDD。但我很少明确断言依赖项应该按特定顺序调用。归根结底,这些测试更多的是关于设计而不是证明正确性,一旦编写了整个类图,您就可以合理地删除它们。

      【讨论】:

        【解决方案3】:

        就个人而言,没有。但我通常也不做 TDD。

        如果您确实先编写了测试,那么您不妨离开它们。他们没有伤害任何东西。

        如果您没有先编写测试,我同意以后添加它们是没有意义的,因为此时您基本上是在测试 MVC 框架。

        【讨论】:

          猜你喜欢
          • 2011-11-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-31
          • 2020-08-12
          • 2017-06-26
          • 2011-12-01
          相关资源
          最近更新 更多