I"m using capybara for my integration/acceptance tests. They're in /spec/requests/
folder. Now I have a few helper methods that I use during acceptance tests. One example is register_user
which looks like this
def register_user(user)
visit home_page
fill_in 'user_name', :with => user.username
fill_in 'password', :with => user.password
click_button 'sign_up_button'
end
I want to use this method in several different acceptance tests (they're in different files). What's the best way to include this? I've tried putting it in spec/support/
but it hasn't been working for me. After spending some time on it I realized I don't even know if it's a good way of doing it so I figured I'd ask here.
Note: I am using rails 3, spork and rspec.
Put your helper to the spec/support folder and do something like this:
spec/support/:
module YourHelper
def register_user(user)
visit home_page
fill_in 'user_name', :with => user.username
fill_in 'password', :with => user.password
click_button 'sign_up_button'
end
end
RSpec.configure do |config|
config.include YourHelper, :type => :request
end
I used the given solution by @VasiliyErmolovich, but I changed the type to make it work:
config.include YourHelper, :type => :feature
Explicit way with ruby
Using include
:
# spec/support/your_helper.rb
class YourHelper
def register_user(user)
visit home_page
fill_in 'user_name', :with => user.username
fill_in 'password', :with => user.password
click_button 'sign_up_button'
end
end
describe MyRegistration do
include YourHelper
it 'registers an user' do
expect(register_user(user)).to be_truthy
end
end