factory girl 可以写生成规则,faker可以生成各种各样的数据;二者结合,即可以生成丰富的测试数据。
在使用Factory Girl前应该有测试框架的支持,如rspec。
Factory Girl
1、安装“工厂妹"
在Gemfile中加入
group:development,:testdo
gem"factory_girl_rails","~> 4.0"
end
bundle install之后,可以看到rails generate -h下多了一个关于factory girl的命令。
rails g factory_girl:model model_name
--dir='指定目录;不指定有默认spec/factories'
2、配置factory girl
# spec/rails_helper.rb
config.include FactoryGirl::Syntax::Methods
#spc/spec_helper.rb
require 'rails_helper'
在factory.rb文件中做以上配置
3、模板数据
配置完成之后,即可以写上模板数据用于支持测试了。
FactoryGirl.definedo
factory:job,class: Job do
title 'test_title'
end
end
factory girl生成的数据比较局限,形如:first_name1,first_name2,first_name3...
不同的数据之间是使用数字进行区别。为了达到数据随机的效果,加入了Faker。
Faker
1、安装Faker
直接加入Gemfile中,进行安装。
gem 'faker'
Faker安装成功后可以在rails console 中进行输出值,用该方法可以检测是否成功安装Faker。
rails console
require 'faker'
Faker::Name.name
能够成功输出一个英文的名字,表示安装成功。
接下来可以在factory girl中使用了。
require'faker'
FactoryGirl.definedo
factory:job,class: Jobdo
title Faker::Name.name
end
end
这样生成的测试数据就是基于Faker的随机数据了。
在Engine中进行配置Factory Girl 和Faker
基本的配置与前面所描述的一致,因为在Engine中,有几个地方是需要注意的。
1.Engine中的lib/engine_name/engine.rb
#Engine中使用Factory Girl
initializer"model_core.factories",:after=>"factory_girl.set_factory_paths"do
FactoryGirl.definition_file_paths<< File.expand_path('../../../spec/factories',__FILE__)if defined?(FactoryGirl)
end
2.Factory Girl 生成数据的文件factories/engine_name.rb
...
factory:resumes,class: Resumes::Resume do
...