使用factory_girl_seeds添加测试种子数据

head_image
之前写过一篇创建测试的种子数据,但是那种方法有一些缺陷,所以现在改成使用factory_girl_seed来创建种子数据。

原因

之前写过一篇创建测试种子文件的blog,虽然创建成功了,但是使用起来还是有些麻烦,因为数据创建,但是创建的数据没有创建数据引用.
比如说创建了一个user 使用的时候还是要用User.find_by_email(..)等代码查询出来。我需要直接使用它。不想多写代码,怎们办那就要用到factory_girl_seeds。

factory_girl_seeds使用

factory_girl_seed的github首页

加入到gem

1
2
3
group :test do
gem 'factory_girl-seeds'
end

创建数据的方式就为,当然数据在factories文件夹中已经写好模版

1
FactoryGirl::SeedGenerator.create(:user)

创建初始数据

新建一个文件,写上生成数据的代码,require到spec_helper.rb或者说是直接在spec_helper.rb最下面中创建一个方法

1
2
3
def create_test_date
FactoryGirl::SeedGenerator.create(:meta_user)
end

在然后加上以下内容,before(:suite)是让他在整个测试开始前运行,搭配上DatabaseCleaner删除数据strategy使用的是struncation(各项strategy的区别

1
2
3
4
5
6
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.clean_with(:truncation)
create_test_data
end
end

完成后直接通过一下语句调用

1
FactoryGirl.seed(:meta_user)