首页 > 解决方案 > 如何在测试运行期间将 Rails 固定装置重新加载到数据库中

问题描述

我的旧代码正在使用 DatabaseCleaner,它会在每次测试完成后清除数据库。然而,它也会清除加载的夹具数据并导致一些使用夹具失败的测试,例如:

ActiveRecord::RecordNotFound Exception: Couldn't find Country with 'id'=593363170

为了使它们一起工作,我如何在测试期间将所有夹具重写回数据库?(我的意思是不耙任务)

标签: ruby-on-railsrspecfixturesdatabase-cleaner

解决方案


解决方案:

设置self.use_transactional_fixtures = false 在要重新加载固定装置之前的文件的开头。

或者use_transactional_tests在 Rails 5 中使用。

不要设置它,spec_helper因为它适用于全局,因此与 DatabaseCleaner 冲突。


推荐阅读