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