如何使用Factory_bot_rails
factory_bot 是一个固定可用直接定义语法 替换,支持多个构建strategies策略(保存实例,不保存实例,属性hashes, stubbed对象), 而且支持多个factories for the same class(user, admin_user, and so on), 包括factory inheritance.
factory_bot_rails 提供的是factory_bot的rails的集成。
配置
Gemfile
group :development, :test do
get 'factory_bot_rails'
end
你可能想去配置测试套件包含factory_bot方法,配置:
RSpec:
如果用的是rails, 增加下面的配置 spec/support/factory_bot.rb , and be sure require that in rails_helper.rb:
factory_bot_rails 提供的是factory_bot的rails的集成。
配置
Gemfile
group :development, :test do
get 'factory_bot_rails'
end
你可能想去配置测试套件包含factory_bot方法,配置:
RSpec:
如果用的是rails, 增加下面的配置 spec/support/factory_bot.rb , and be sure require that in rails_helper.rb:
RSpec.configure do |config| config.include FactoryBot::Syntax::Methods end
如果不是rails
https://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md#configure-your-test-suite
自动化的Factory定义加载
默认,factory_bot_rails 将自动加载factories定义在下面位置。相对Rails项目的root路径:
factories.rb
test/factories.rb
spec/factories.rb
factories/*.rb
test/factories/*.rb
spec/factories/*.rb
你可以在config/application.rb, config/environments 增加自动加载的配置信息
config.factory_bot.definition_file_paths = ["custom/factories"]
这将引起 factory_bot_rails 去自动加载factories 位于: custom/factories.rb 和 custom/factories/*.rb
也可以去使用这个设置通过一个gem去分享factories,
begin
require 'factory_bot_rails'
rescue LoadError
end
class MyEngine < ::Rails::Engine
config.factory_bot.definition_file_paths += [File.expand_path('../factories', __FILE__)] if defined?(FactoryBotRails)
end
你也可以禁止自动化的factory定义加载,通过定一个空数组
config.factory_bot.definition_file_paths = []
Generators 构造器
包括factory_bot_rails 在你的Gemfile开发组里面将引起rails去构造factories ,并替换fixtures. 如果你想禁用这个功能,你可以either move factory_bot_rails out of development group of your Gemfile, 或者增加下面的配置
config.generators do |g| g.factory_bot false end
如果fixture replaement 是启用的,你已经有了 test/factories.rb file 或者 spec/factories.rb, (rspec_rails), 生成factories 将被插入到存在的文件的顶部。否则工厂将被生成在 test/factories 目录(spec/factories 如果你用rspec_rails) 文件名和table匹配。
test/factories/user.rb
生成一个不同的文件目录的配置:
config.generators do |g|
g.factory_bot dir: 'custom/dir/for/factories'
end
注释factory_bot_rails 将不会自动加载files 在你自定的路径里面,除非你也增加他们到 config.factory_bot.definition_file_paths.
这个后缀选项,允许你去自定义生成的文件的后缀:
config.generators do |g|
g.factory_bot suffix: "factory"
end
这将生成 test/factories/users_factory.rb 而不是 test/factories/users.rb
对于更加个性化的配置,使用 filename_proc 选项:
config.generators do |g|
g.factory_bot filename_proc: -> (table_name) {"prefix_#{table_name}_suffix"}
end
去覆盖 默认的 factory template, 定义你自己的template 在 lib/templates/factory_bot/model/factories.erb. 这个模板将进入任何可用的定义再FactoryBot::Generators::ModelGenerator. Note that factory_bot_rails 将只用这个custom template 如果你是生成每个factory再一个独立的文件; 他将没有影响,如果你生成所有的factories 在 test/factories.rb 或者 spec/factories.rb
阅读量: 1290
发布于:
修改于:
发布于:
修改于: