8
votes

I am using rspec and capybara for integration testing.

Is their a way to make session objects in request specs?

I have a view page in which I use a session object to check its value to display selective content.

The problem am facing is that I cannot create a session object in request spec. Here is an example of the view:

<% if session[:role] == "Role" %>
---content---
<% else %>
--content--
<% end %>

And inside my request spec

session[:role] = "Role"
visit my_path

But it throws me an error "undefined method `session' for nil:NilClass".

I also tried looking into creating session objects of capybara.But couldnt find anything.

Is their any workaround for this? I can not find anything related to this, it seems that it is not possible.A little help is really appreciated.

1
Inside the if condition you probably meant == instead of =.Alok Swain
yes m sorry, i meant == hereAnidhya Ahuja

1 Answers

3
votes

The way you are supposed to do request specs is visit whatever URL the user would normally need to visit in order for that session variable to be set.

I don't know of any other way, other perhaps than setting the session cookie by hand. Capybara.current_session.driver.browser.set_cookie let's you do this but you would have to create the cookie value by hand.