在其他语言和技术堆栈中,我总是被告知在编写单元测试时模拟/存根数据库层和所有外部服务。但是,RoR人群往往不会模拟/存根数据库层,有时甚至会在控制器(颤抖)中进行Active Record调用(例如#find)。
一方面,Active Record非常棒,让很多任务变得非常简单。它使对象图的表示非常简单和好。另一方面,我似乎无法摆脱在控制器中调用Active Record上的#find是糟糕设计的感觉。如果我在我的应用程序和Active Record之间放置一个抽象层,从而只从持久层返回数据传输对象,那么我将不得不编写更多的代码。但是,我的测试速度非常快,应用程序的架构设计将更接近我以前的设计。
每个人对这个问题的看法是什么?