Search code examples
cucumberpicklespork

Using Pickle with spork?


Pickle doesn't seem to be loading for me when I'm using spork...

If I run my cucumber normally, the step works as expected:

➜ bundle exec cucumber

And a product exists with name: "Windex", category: "Household Cleaners", description: "nasty bluish stuff" # features/step_definitions/pickle_steps.rb:4

But if I run it through spork, I get an undefined step:

You can implement step definitions for undefined steps with these snippets:

Given /^a product exists with name: "([^"]*)", category: "([^"]*)", description: "([^"]*)"$/ do |arg1, arg2, arg3|
  pending # express the regexp above with the code you wish you had
end

What gives?


Solution

  • So it turns out there is an extra config line necessary for features/support/env.rb when using spork in order to have Pickle be able to pickup on AR models, a la this gist:

    In features/support/env.rb

    Spork.prefork do
      ENV["RAILS_ENV"] ||= "test"
      require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
    
      # So that Pickle's AR adapter properly picks up the application's models.
      Dir["#{Rails.root}/app/models/*.rb"].each { |f| load f }
    
      # ...
    end
    

    Adding in this line fixes my problem. This is more of a spork issue than guard, per se. I'll update my question...