factory girl 可以寫生成規(guī)則闷袒,faker可以生成各種各樣的數(shù)據(jù)坐儿;二者結(jié)合薪前,即可以生成豐富的測試數(shù)據(jù)奏篙。
在使用Factory Girl前應(yīng)該有測試框架的支持柴淘,如rspec。
Factory Girl
1秘通、安裝“工廠妹"
在Gemfile中加入
group:development,:testdo
? ? gem"factory_girl_rails","~> 4.0"
end
bundle install之后为严,可以看到rails generate -h下多了一個關(guān)于factory girl的命令。
rails g factory_girl:model model_name
--dir='指定目錄肺稀;不指定有默認(rèn)spec/factories'
2第股、配置factory girl?
# spec/rails_helper.rb
config.include FactoryGirl::Syntax::Methods
#spc/spec_helper.rb
require 'rails_helper'
在factory.rb文件中做以上配置
3、模板數(shù)據(jù)
配置完成之后盹靴,即可以寫上模板數(shù)據(jù)用于支持測試了。
FactoryGirl.definedo
? ? factory:job,class: Job ?do
? ? ? ? title 'test_title'
? ? end
end
factory girl生成的數(shù)據(jù)比較局限瑞妇,形如:first_name1,first_name2,first_name3...
不同的數(shù)據(jù)之間是使用數(shù)字進(jìn)行區(qū)別稿静。為了達(dá)到數(shù)據(jù)隨機(jī)的效果,加入了Faker辕狰。
Faker
1改备、安裝Faker
直接加入Gemfile中,進(jìn)行安裝蔓倍。
gem ? ?'faker'
Faker安裝成功后可以在rails console 中進(jìn)行輸出值悬钳,用該方法可以檢測是否成功安裝Faker。
rails console
require 'faker'
Faker::Name.name
能夠成功輸出一個英文的名字偶翅,表示安裝成功默勾。
接下來可以在factory girl中使用了。
require'faker'
FactoryGirl.definedo
? ? factory:job,class: Jobdo
? ? ? ? title Faker::Name.name
? ? end
end
這樣生成的測試數(shù)據(jù)就是基于Faker的隨機(jī)數(shù)據(jù)了聚谁。
在Engine中進(jìn)行配置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 生成數(shù)據(jù)的文件factories/engine_name.rb
...
? ? factory:resumes,class: Resumes::Resume do
...