Hey, I have the following simple scenario and the step definitions:
Scenario: Create album Given I am logged in as "pepito" When I go to my profile page ... Given /^the user (.*) exists$/ do |login_name| User.find_by_login(login_name) || Factory(:user_with_password, :login => login_name) end Given /^I log in as (.*)$/ do |login_name| user = User.find_by_login(login_name) # it is supposed that the user was generated by the :user_with_password fixture # that has the 'secret' password post "/session", :login => user.login, :password => 'secret' end Given /^I am logged in as "(.*)"$/ do |login_name| Given "the user #{login_name} exists" Given "I log in as #{login_name}" end When /^I go to (.+)$/ do |page_name| visit path_to(page_name) end def path_to(page_name) case page_name when /my profile page/i member_profile_path(:id => session[:user_id]) ... end I receive the following error: When I go to my profile page # features/step_definitions/webrat_steps.rb:6 You have a nil object when you didn't expect it! The error occurred while evaluating nil.session (NoMethodError) /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/test_process.rb:429:in `session' So it seems like the session is not accessible -or not this way- in the step definitions. I finally came up with that workaround: def path_to(page_name) case page_name when /my profile page/i member_profile_path(:id => User.first) ... end However, I am not at all content with this hack. It does not go to the profile page of the logged in user but to the first one. This can be the same -and in this scenario it is- but there is no guarantee for that. I wonder if there is a way to retrieve things stored in the session. Ideally I could even write: when /my profile page/i member_profile_path(:id => current_user) Where current_user is defined in a helper class, and will also use a session variable behind the scenes (I received an undefined method "current_user" error when I tried this). Could someone enlighten me about how to do this or whether this is considered bad practice because current_user is more state-based (as opposed to behavior-based_? Thank you, Balint -- Posted via http://www.ruby-forum.com/. _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users