单元测试瘦控制器真的有必要吗?
Is unit testing skinny controllers really necessary?
我想知道你们是否对控制器进行单元测试,这是否是 TDD 环境中的常见做法。
我拥有的是 瘦控制器,它们基本上调用 业务层 获取逻辑和数据,然后 填充本地 ViewModel 以传递给视图。
我对业务层进行单元测试,但我想知道测试这些瘦控制器是否仍然有意义,或者它真的没有必要,除非你有一个包含很多逻辑的胖控制器。
请告诉我你的想法。
谢谢。
就我个人而言,不。但我通常也不做 TDD。
如果您确实先编写了测试,那么您不妨留下它们。他们没有伤害任何东西。
如果您没有先编写测试,我同意之后添加它们没有意义,因为此时您基本上是在测试 MVC 框架。
为 class 创建一个 UT,他所做的只是将呼叫从一个点转发到另一个点,这不是一个好主意。原因很简单:这不值得……你不会从这些测试中获得任何好处,而且你将不得不随着时间的推移维护这些测试,而你不会验证任何行为(只是结构...)
那么我该如何涵盖这些单位呢?方法也很简单;将它们作为使用它们的一部分进行测试。
现在回到 最初的问题... 我发现测试瘦控制器的方法是通过 component/integration 测试。我从 BL 开始,当我必须将 BL 与控制器耦合时,我创建了一个 component/integration 测试,然后以控制器实现结束任务。
根据经验,我不会费心测试没有任何逻辑的东西。仅仅调用另一个对象很难算作逻辑 IMO。在顺序很重要的序列中调用多个其他对象更值得商榷。
如果我使用由外向内的方法,我会做的是 TDD 控制器,方法是在我进一步向上食物链并实现真正的依赖关系之前,通过清除它的依赖关系(业务服务、映射器等) .但我很少 明确地 断言应该以特定顺序调用依赖项。归根结底,这些测试更多的是关于设计而不是证明正确性,一旦 类 的整个图写完,您就可以合理地删除它们。
我想知道你们是否对控制器进行单元测试,这是否是 TDD 环境中的常见做法。
我拥有的是 瘦控制器,它们基本上调用 业务层 获取逻辑和数据,然后 填充本地 ViewModel 以传递给视图。
我对业务层进行单元测试,但我想知道测试这些瘦控制器是否仍然有意义,或者它真的没有必要,除非你有一个包含很多逻辑的胖控制器。
请告诉我你的想法。
谢谢。
就我个人而言,不。但我通常也不做 TDD。
如果您确实先编写了测试,那么您不妨留下它们。他们没有伤害任何东西。
如果您没有先编写测试,我同意之后添加它们没有意义,因为此时您基本上是在测试 MVC 框架。
为 class 创建一个 UT,他所做的只是将呼叫从一个点转发到另一个点,这不是一个好主意。原因很简单:这不值得……你不会从这些测试中获得任何好处,而且你将不得不随着时间的推移维护这些测试,而你不会验证任何行为(只是结构...)
那么我该如何涵盖这些单位呢?方法也很简单;将它们作为使用它们的一部分进行测试。
现在回到 最初的问题... 我发现测试瘦控制器的方法是通过 component/integration 测试。我从 BL 开始,当我必须将 BL 与控制器耦合时,我创建了一个 component/integration 测试,然后以控制器实现结束任务。
根据经验,我不会费心测试没有任何逻辑的东西。仅仅调用另一个对象很难算作逻辑 IMO。在顺序很重要的序列中调用多个其他对象更值得商榷。
如果我使用由外向内的方法,我会做的是 TDD 控制器,方法是在我进一步向上食物链并实现真正的依赖关系之前,通过清除它的依赖关系(业务服务、映射器等) .但我很少 明确地 断言应该以特定顺序调用依赖项。归根结底,这些测试更多的是关于设计而不是证明正确性,一旦 类 的整个图写完,您就可以合理地删除它们。