factory_bot is a fixtures replacement with a straightforward definition
syntax, support for multiple build strategies (saved instances, unsaved
instances, attribute hashes, and stubbed objects), and support for multiple
factories for the same class (
admin_user, and so on), including factory
factory_bot_rails provides Rails integration for factory_bot.
Currently, automatic factory definition loading is the only Rails-specific feature.
$ gem install factory_bot_rails
factory_bot_rails to your Gemfile:
group :development, :test do gem 'factory_bot_rails' end
Generators for factories will automatically substitute fixture (and maybe any other
fixture_replacement you set). If you want to disable this feature, add the
following to your application.rb file:
config.generators do |g| g.factory_bot false end
Default factories directory is
test_framework generator is set to
:rspec; change this behavior with:
config.generators do |g| g.factory_bot dir: 'custom/dir/for/factories' end
If you use factory_bot for fixture replacement, ensure that factory_bot_rails is available in the development group. If it's not, Rails will generate standard .yml files instead of factory files.
factory_bot takes an option
suffix: 'some_suffix' to generate factories as
If you use factory_bot for fixture replacement and already have a
factories.rb file in the directory that contains your tests,
factory_bot_rails will insert new factory definitions at the top of
You may need to configure your test suite to include factory_bot methods; see configuration.
Please see CONTRIBUTING.md.
factory_bot was originally written by Joe Ferris.
factory_bot is maintained and funded by thoughtbot, inc
The names and logos for thoughtbot are trademarks of thoughtbot, inc.
factory_bot_rails is Copyright © 2008-2016 Joe Ferris and thoughtbot. It is free software, and may be redistributed under the terms specified in the LICENSE file.