存根控制器规格的好处

时间:2013-06-25 01:37:56

标签: model-view-controller testing

为什么在控制器规范中存根数据库调用是约定的?我主要研究为什么(或者为什么不)在控制器中存根数据库调用是很好的。我的观点是,如果它是一个简单的查询(即通过id查找),在某些情况下存根,那么它是可以的,但是当你进入更复杂的查询时它是有用的。我还可以说你的控制器中不应该有复杂的查询,并且应该在模型中完成这样的逻辑。

让我知道你的想法或对此的感受,谢谢。

3 个答案:

答案 0 :(得分:0)

存根对于模拟集成点特别有用,以便编写没有外部依赖性的纯单元测试。 这意味着它的用处实际上是基于查询的复杂性,而是作为抽象出依赖关系的一种方式

答案 1 :(得分:0)

我喜欢单独放置数据库调用。无论查询有多简单或复杂,我都将数据库函数放在一个单独的类中。

  1. 它为我提供了精密的设计和集中的逻辑。
  2. 我可以轻松地在任何控制器中重复使用这些功能。
  3. 基本上,我模拟存储过程。我在上一个和当前的项目中一直在练习这个,我对它有一个积极的反馈。

答案 2 :(得分:0)

DB调用在控制器中没有位置。表示层(控制器,视图,模板等)甚至不应该知道存在任何类型的存储(无论是SQL数据库,远程REST API还是一些神奇的文本文件)。数据库交互应该在模型层中进行,它由不同的实例组执行 - 类似于data mappers

基本上,你的MVC坏了。