为什么在控制器规范中存根数据库调用是约定的?我主要研究为什么(或者为什么不)在控制器中存根数据库调用是很好的。我的观点是,如果它是一个简单的查询(即通过id查找),在某些情况下存根,那么它是可以的,但是当你进入更复杂的查询时它是有用的。我还可以说你的控制器中不应该有复杂的查询,并且应该在模型中完成这样的逻辑。
让我知道你的想法或对此的感受,谢谢。
答案 0 :(得分:0)
存根对于模拟集成点特别有用,以便编写没有外部依赖性的纯单元测试。 这意味着它的用处实际上是基于查询的复杂性,而是作为抽象出依赖关系的一种方式
答案 1 :(得分:0)
我喜欢单独放置数据库调用。无论查询有多简单或复杂,我都将数据库函数放在一个单独的类中。
基本上,我模拟存储过程。我在上一个和当前的项目中一直在练习这个,我对它有一个积极的反馈。
答案 2 :(得分:0)
DB调用在控制器中没有位置。表示层(控制器,视图,模板等)甚至不应该知道存在任何类型的存储(无论是SQL数据库,远程REST API还是一些神奇的文本文件)。数据库交互应该在模型层中进行,它由不同的实例组执行 - 类似于data mappers。
基本上,你的MVC坏了。