сеанс доступен в некоторых файлах rspec, но не в других. Как так?

Пытаясь протестировать некоторые функции входа/выхода -, я хочу удалить некоторую информацию из сеанса. Я обнаружил, что вообще не могу получить доступ к сеансам. Я продолжал получать сообщение об ошибке :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

Так почему же сеанс здесь является неопределенным методом?

7
задан snowguy 5 July 2012 в 16:48
поделиться