在Rails测试中,相当慢的一点似乎来自与数据库的通信。我已经开始用create
替换一些测试,这些测试将FactoryBot的build
和build_stubbed
方法称为。但是,有些测试涉及测试回调,有些甚至涉及测试多个回调如何彼此交互。
我开始四处搜寻,看看是否有人建立了一个存有save方法的库,但找不到任何东西。我在想一些可以正确顺序调用所有回调方法以及正确设置所有Active Model Dirty记录的东西。验证唯一性和回调中的任何ActiveRecord查询之类的事情都必须手动取消,以便不与数据库对话。
是否已经有具有此功能的工具?还是不是很有价值,因为如果您仍然执行所有这些操作,那么最终不会对速度产生太大影响。关于存盘保存方法,我没有考虑什么吗?
答案 0 :(得分:0)
在测试Rails应用程序时存根数据库是否不可能?不,但这实际上是不可行的。
我所知道的最接近的是在内存中的SQLite实例上运行Rails。
原因如下:
save
只是在Rails中访问数据库的众多方式之一我听说有一些项目试图解决上述原因,而这些项目与Rails应用程序的通常构建方式大相径庭:
换句话说,考虑到ActiveRecord通常扮演的角色,这需要对“常规Rails应用程序”的体系结构和用法进行根本性的改变。