在跑测试程式的时候,不免会遇到资料残留导致数据计算错误的情况,也就是程式码其实是正确的,只是因为之前跑了其他测试,在测试的资料库已经留有一些资料,导致最后统计的时候出了问题,跑不过测试。这时使用 database_cleaner 这个gem可以协助解决这个状况。
那么我们便开始吧~
STEP 1 首先先将这个 gem 加入 Gemfile
group :development, :test do gem 'database_cleaner', '~> 2.0', '>= 2.0.1'end
STEP 2 检视文件,搜寻 RSpec
STEP 3 複製以下片段至 /spec/rails_helper.rb
config.before(:suite) do DatabaseCleaner.strategy = :transaction DatabaseCleaner.clean_with(:truncation)endconfig.around(:each) do |example| DatabaseCleaner.cleaning do example.run endend
STEP 4 修改程式码
如果执行测试码还是无法通过,将 :suit
改成 :each
, 确保先前的数据每一笔都确实清除
参考资料:https://github.com/DatabaseCleaner/database_cleaner/