Пытаясь протестировать некоторые функции входа/выхода -, я хочу удалить некоторую информацию из сеанса. Я обнаружил, что вообще не могу получить доступ к сеансам. Я продолжал получать сообщение об ошибке :undefined method `session 'для nil :NilClass.
Но затем, к моему удивлению, я обнаружил, что могу получить доступ к сеансу с других страниц rspec. Дополнительные сведения приведены ниже. Мой вопрос: :Почему я могу получить доступ к сеансу из одних файлов, а не из других? И как я могу сделать так, чтобы я мог получить доступ к сеансу во втором примере ниже?
Подробности Файл :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 ==)
И это хорошо. Это должно потерпеть неудачу по этой причине.
Но когда я запускаю второй файл, я получаю:
Failure/Error: specify { session[:tag].should == 'abc' }
NoMethodError:
undefined method `session' for nil:NilClass
Так почему же сеанс здесь является неопределенным методом?