rails rspec测试使用seed文件添加基本测试数据

head_image
因为当初不写测试

参与了一个项目的制作,当时为了项目的速度,导致里面的脏代码太多,而且当时也没有写上测试,所以项目现在不能看。好吧是我写测试没有坚持下去。

现在开始重构代码了,补上测试,脏代码也要完全改过。好苦逼啊!不过自己挖的坑终究是要自己来填的。

使用

项目model层的关系有些复杂,有的model是依赖一些model才能创建,往往创建一个对象会链锁反应需要创建一堆的对象,而且测试需要的对象所要的依赖大多都不相同。所以找了个办法使用了seeds文件在每次执行测试之前添加测试数据。

首先创建seed文件,当然你可以随便取名字只要.rb结尾

1
$ rails_app_path/db/test_seeds.rb

然后打开你的spec_helper.rb文件加入以下内容

1
2
3
4
5
RSpec.configure do |config|
config.before(:suite) do
load "#{Rails.root}/db/test_seeds.rb"
end
end

然后你每次的运行测试之前都会将这个seeds文件先执行一遍。这时候你就可以使用DatabaseCleaner每次执行测试前将数据库内容清空