[rspec-users] preferred place for methods used by both rspec and cucumber?

Phillip Koebbe phillipkoebbe at gmail.com
Thu Sep 22 09:30:06 EDT 2011

On 2011-09-21 9:35 PM, Patrick J. Collins wrote:
> Hi,
> I have some helper methods such as:
> def mock_omniauth
>    OmniAuth.config.test_mode = true
>    OmniAuth.config.mock_auth[:facebook] = facebook_user
> end
> def facebook_user
>    @facebook_user ||= HashWithIndifferentAccess.new(YAML.load(File.read("#{Rails.root}/test/fixtures/fb_user.yml")))
> end
> that I want to use in both cucumber step definitions and rspec.  Is there a
> preferred place to store this code, or is it standard practice to just define
> them in a module in config/inititalizers and include that in both cucumber's
> env.rb and rspec's spec_helper.rb?
> Thanks.
> Patrick J. Collins
> http://collinatorstudios.com

I agree with David that config/initializers isn't the right place as 
that would load test-related code into your application in production.

I create a folder in Rails.root for shared code and then require it as 
necessary in RSpec and Cucumber. My current directory name is 
test_support, which I'm not terribly fond of, but doesn't really matter 
so I haven't wasted the brain energy to rename it. The benefit of 
keeping shared code in a folder external to both tools is I can totally 
remove one tool without the other breaking. If you keep the shared code 
inside one or the other, you have to be careful about changing whichever 
one hosts the shared code.


More information about the rspec-users mailing list