Practical Cucumber: Factory Girl steps

This post is part of our Practical Cucumber series.

Did you know that factory_girl comes with some really useful cucumber steps? You’re not alone, even though they’ve been around for a while.

Simply require them in your cucumber env.rb file:

require "factory_girl/step_definitions"

Then you can begin using them in your features:

Given a user exists with an email of ""
And the following categories exist:
  | Name     |
  | Cucumber |
  | BDD      |
And the following article exists:
  | Title                       | Body   | Published at |
  | Factory Girl cucumber steps | lorem… | 2010-09-10   |

One of my favorite features of the factory_girl steps is that you can also specify associations:

Given the following user exists:
  | Name    | Email               |
  | Brandon | |
And the following articles exist:
  | Title     | Author        |
  | Article 1 | Name: Brandon |
  | Article 2 | Name: Daniel  |

To make this to work, declare your associations in the factory and the steps will try to find or create by the association attribute.

Factory.define :article do |m|
  m.sequence(:title) {|i| "Article #{i}" }
  m.association :author, :factory => :user

Stop wasting time writing basic steps for creating models and spend your time working on the application.

This post is part of our Practical Cucumber series.

Brandon Keepers


Post a Comment

(optional — will be included as a link.)
  1. In the words of Johnny Carson (through the voice of Dana Carvey), “I… I did not know that.”  But I’m very happy I do now; that’s awesome.

    September 09, 2010 at 12:34 PM
  2. I have been using Machinist lately and didn’t find any cucumber steps like these, so right away I hacked together some Machinist steps.

    Might be helpful to someone.

    September 09, 2010 at 16:50 PM
  3. That really good to know. Thanks for this great tip!

    September 27, 2010 at 10:32 AM
  4. Thank you, I found this useful

    October 29, 2010 at 12:10 PM
  5. Thank you, I found this useful

    October 29, 2010 at 12:09 PM
  6. Thanks for sharing

    December 14, 2010 at 13:07 PM
  7. thanks

    February 26, 2011 at 16:05 PM
  8. That’s very interesting indeed. However i get the following error

    Undefined step: “the following user exists:” (Cucumber::Undefined exception)

    (i’ve installed all the required gems and updated the cucumbre env.rb file)

    Any hints on how to fix that? Thanks!

    May 18, 2011 at 6:44 AM
  9. Dorian, I know exactly what it is because I got stuck here a couple months ago, even though I’ve done this tons of times.

    Make sure you have a user factory defined. It isn’t enough to just have the model, you have to have the factory defined too. 

    Hope that solves it!

    May 18, 2011 at 6:59 AM
  10. Is there a way to do this without tables?

    March 21, 2012 at 17:16 PM
  11. Alas, it appears these are to be removed in 4.0.

    July 02, 2012 at 22:28 PM
  12. Ah, yes, these factory_girl steps have been removed. I wondered why I couldn’t get it to work. I should also remember check the date of when articles are written. =/

    August 31, 2012 at 12:38 PM
  13. Good point. Time for us to update the post!

    August 31, 2012 at 12:39 PM
  14. The above steps really seemed to be ,helpful from the point of implementing Factory girl in Cucumber.

    Sibu Stephen
    Sibu Stephen
    January 07, 2015 at 0:35 AM
  15. It looks like they moved this somewhere, or got rid off it. I’m having trouble finding it now.

    September 21, 2015 at 15:48 PM