переменная сеанса недоступна в глобальном ранее (: each,: type =>: controller) - PullRequest
0 голосов
/ 14 января 2011

Я рефакторинг некоторых спецификаций, в спецификации контроллера у меня есть before(:each), который устанавливает вещи, необходимые в сеансе, хотел избежать дублирования и поставить глобальную первоначальную настройку для каждой спецификации контроллера

my beforeфильтр ...

config.before(:each, :type => :controller) do

  #... 

  session[:current_user] = @user
  session[:instance] = @instance

  #...

end

@user и @instance также установлены в before(:each) Я только что спрятал их для удобства чтения здесь

Я получаю следующую ошибку, когдавыполнение тестов контроллера

undefined method `session' for nil:NilClass

Я бы ожидал, что глобальные вызовы до обратного вызова будут иметь те же функции, что и в отдельных тестах, но я думаю, что они могут быть загружены до инициализации среды rails?

Спасибо

Ответы [ 2 ]

1 голос
/ 22 января 2011

Использование controller.stub!(:session, { :current_user => @user, :instance => @instance })

0 голосов
/ 14 января 2011

Я думаю, что это больше связано с Ruby и блоками (которые являются замыканиями).

Блок, переданный в before, привязан к контексту, в котором он создан, и session недоступен в этом контексте.

...