In trying to test some sign-in/out functionality I want to delete some information from the session. I found out I couldn't access the sessions at all. I kept getting the error: undefined method `session' for nil:NilClass.
But then to my surprise I found out I could access session from other rspec pages. Additional details are below. My question is: Why can I access session from some files and not others? And how can I make it so that I can access session in my second example below?
Details
File: spec/controllers/tenants_controller_spec.rb
require 'spec_helper'
describe TenantsController do
specify { session[:tag].should == 'abc' }
end
File: spec/requests/test.rb
require 'spec_helper'
describe 'Test' do
specify { session[:tag].should == 'abc' }
end
When I run the first file through rspec I get:
Failure/Error: specify { session[:tag].should == 'abc' }
expected: "abc"
got: nil (using ==)
Which is good. This should fail for that reason.
But, when I run the second file, I get:
Failure/Error: specify { session[:tag].should == 'abc' }
NoMethodError:
undefined method `session' for nil:NilClass
So why is session an undefined method here?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…