factory_girl 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 (user
, admin_user
, and so on), including factory
inheritance.
factory_girl_rails provides Rails integration for factory_girl.
Currently, automatic factory definition loading is the only Rails-specific feature.
Supported Rails versions are listed in Appraisals
. Supported
Ruby versions are listed in .travis.yml
.
Github: http://github.com/thoughtbot/factory_girl_rails
Gem:
gem install factory_girl_rails
Add factory_girl_rails
to your Gemfile:
gem 'factory_girl_rails'
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_girl false
end
Default factories directory is test/factories
, or spec/factories
if
test_framework
generator is set to :rspec
; change this behavior with:
config.generators do |g|
g.factory_girl dir: 'custom/dir/for/factories'
end
If you use factory_girl for fixture replacement, ensure that factory_girl_rails is available in the development group. If it's not, Rails will generate standard .yml files instead of factory files.
factory_girl takes an option suffix: 'some_suffix'
to generate factories as
modelname_some_suffix.rb
.
If you use factory_girl for fixture replacement and already have a
factories.rb
file in the directory that contains your tests,
factory_girl_rails will insert new factory definitions at the top of
factories.rb
.
Please see CONTRIBUTING.md.
factory_girl was originally written by Joe Ferris.
factory_girl is maintained and funded by thoughtbot, inc
The names and logos for thoughtbot are trademarks of thoughtbot, inc.
factory_girl_rails is Copyright © 2008-2014 Joe Ferris and thoughtbot. It is free software, and may be redistributed under the terms specified in the LICENSE file.