Did you know… Factory Bot includes some steps for your integration testing pleasure? They are currently available but remain relatively unknown.
Read the source at
features/step_definitions/factory_bot_steps.rb.
They make Direct Model Access a little easier from your Cucumber features.
Example usage
Define your factories normally in test/factories.rb or spec/factories.rb:
Factory.define :user do |user|
  user.email                 { Factory.next(:email) }
  user.password              { "password" }
  user.password_confirmation { "password" }
end
Factory.define :author, :parent => :user do |author|
  author.after(:create) { |a| Factory(:article, :author => a) }
end
Factory.define :recruiter, :parent => :user do |recruiter|
  recruiter.is_recruiter { true }
end
Make sure Factory Bot is available in your config/environments/cucumber.rb:
config.gem 'factory_bot', :version => '>= 1.2.3'
Require Factory Bot’s step definitions in features/support/env.rb:
require 'factory_bot/step_definitions'
Then, write Cucumber features using the simple “create record” step:
Given a user exists
… or the “create record & set one attribute” step:
Given an author exists with an email of "author@example.com"
… or the “create record & set multiple attributes” step:
Given the following recruiter exists:
  | email            | phone number | employer name |
  | bill@example.com | 1234567890   | thoughtbot    |
Avoid boilerplate
These steps will be available for all your factories, so stop writing boilerplate steps and shake what Factory Bot gave you.
Disclaimer:
Looking for FactoryGirl? The library was renamed in 2017. Project name history can be found here.
