【gem】database_cleaner 为你的测试数据做清理

在跑测试程序的时候,不免会遇到资料残留导致数据计算错误的情况,也就是程序码其实是正确的,只是因为之前跑了其他测试,在测试的资料库已经留有一些资料,导致最後统计的时候出了问题,跑不过测试。这时使用 database_cleaner 这个gem可以协助解决这个状况。

那麽我们便开始吧~

STEP 1 首先先将这个 gem 加入 Gemfile

group :development, :test do
  gem 'database_cleaner', '~> 2.0', '>= 2.0.1'
end

STEP 2 检视文件,搜寻 RSpec

https://ithelp.ithome.com.tw/upload/images/20220411/20147393Fp5DdEq4AH.png

STEP 3 复制以下片段至 /spec/rails_helper.rb

config.before(:suite) do
  DatabaseCleaner.strategy = :transaction
  DatabaseCleaner.clean_with(:truncation)
end

config.around(:each) do |example|
  DatabaseCleaner.cleaning do
    example.run
  end
end

https://ithelp.ithome.com.tw/upload/images/20220411/20147393lfEex3aHI4.png

STEP 4 修改程序码

如果执行测试码还是无法通过,将 :suit 改成 :each , 确保先前的数据每一笔都确实清除
https://ithelp.ithome.com.tw/upload/images/20220411/20147393L5nVXHncQe.png

参考资料:https://github.com/DatabaseCleaner/database_cleaner/


<<:  CPE 一颗星解答 - Java 笔记与心得分享

>>:  【JavaScript】阵列方法之some()

虹语岚访仲夏夜-16(打杂的Allen篇)

这什麽东西啊...我看着Asuka的信箱... 「你看,你那种想笑又不笑的脸,很讨厌耶。」 『他们发...

每日挑战,从Javascript面试题目了解一些你可能忽略的概念 - Day26

tags: ItIron2021 Javascript 前言 昨天我们开始了新的系列,剩下这几天也会...

Day 7 | 3ds Max转档至unity要点Part1

在开发游戏的过程中,美术需要把做好的档案交给程序,那麽也一定需要固定的规范,因此分享3ds max汇...

ISO 27001 资讯安全管理系统 【解析】(十二)

资通安全责任等级 依照资通安全责任等级分级办法,由主管机关核定相对应之等级,按照等级决定导入系统之...

硬碟管理实作

昨天介绍完硬碟管理,来实作吧~ TIPS: Array在unRaid指的是资料池,并非POOL(在u...