rspec中使用factory girl 和faker

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

...

你可能感兴趣的:(rspec中使用factory girl 和faker)