サインイン/サインアウト機能をテストしようとして、セッションからいくつかの情報を削除したいと考えています。セッションにまったくアクセスできないことがわかりました。nil:NilClass の undefined method `session' というエラーが発生し続けました。
しかし、驚いたことに、他の rspec ページからセッションにアクセスできることがわかりました。追加の詳細は以下のとおりです。私の質問は: 一部のファイルからセッションにアクセスでき、他のファイルからアクセスできないのはなぜですか? 以下の2番目の例でセッションにアクセスできるようにするにはどうすればよいですか?
詳細ファイル: spec/controllers/tenants_controller_spec.rb
require 'spec_helper'
describe TenantsController do
specify { session[:tag].should == 'abc' }
end
ファイル: spec/requests/test.rb
require 'spec_helper'
describe 'Test' do
specify { session[:tag].should == 'abc' }
end
rspec を介して最初のファイルを実行すると、次のようになります。
Failure/Error: specify { session[:tag].should == 'abc' }
expected: "abc"
got: nil (using ==)
どっちがいい。そのため、これは失敗するはずです。
しかし、2 番目のファイルを実行すると、次のようになります。
Failure/Error: specify { session[:tag].should == 'abc' }
NoMethodError:
undefined method `session' for nil:NilClass
では、なぜここで session が未定義のメソッドなのですか?