似乎轨道测试中的一些缓慢来自与数据库的通信。我已经开始更换一些测试,我用create
调用FactoryBot的build
和build_stubbed
方法。但是,一些测试涉及测试回调,有些甚至涉及测试多个回调如何相互作用。
我开始四处搜索,看是否有人构建了一个存根保存方法的库,但找不到任何东西。我正在想象能够以正确的顺序调用所有回调方法以及正确设置所有Active Model Dirty记录的东西。在回调中验证唯一性和任何ActiveRecord查询之类的事情必须手动删除,我想是为了不与数据库交谈。
是否有任何工具已经具有此功能?或者它没有价值,因为如果您无论如何都要执行所有这些操作,它最终不会产生太大的速度影响。关于存储保存方法,有什么我不考虑的吗?
在测试Rails应用程序时是否无法存根数据库?不,但它实际上是不可行的。
我最了解的是在内存中的SQLite实例上运行Rails。
原因有以下几点:
save
只是Rails中访问数据库的众多不同方式之一我听说过一些项目试图解决上述原因,与Rails应用程序常用的常见方式有很大差异:
换句话说,考虑到ActiveRecord通常扮演的角色有多大,它需要对“传统Rails应用程序”的架构和使用进行根本性的改变。