Установка HTTP_REFERER в глобальном before (: all) в Rspec - PullRequest
6 голосов
/ 26 февраля 2009

Во избежание добавления

request.env["HTTP_REFERER"] = '/'

к блоку before в каждом создаваемом мной файле controller_spec, я попытался добавить это в глобальный конфиг (в spec_helper.rb)

config.before(:each) {request.env["HTTP_REFERER"] = '/'}

Проблема в том, что я получаю следующую ошибку:

You have a nil object when you didn't expect it!
The error occurred while evaluating nil.env

У кого-нибудь есть указания, как правильно это реализовать?

Ура!

Ответы [ 2 ]

12 голосов
/ 26 февраля 2009

Вы пробовали

  config.before(:type => :controller) do
    request.env["HTTP_REFERER"] = "/"
  end
1 голос
/ 11 июля 2011

Я заметил, что ответ Мэтта был 2 года назад, я не уверен, какую версию "rspec" он использовал. но для моего случая моя версия rspec = 1.3.2, и сегмент кода не работает (всегда появляется ошибка:

You might have expected an instance of Array.
The error occurred while evaluating nil.<<
    from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/configuration.rb:181:in `__send__'
    from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/configuration.rb:181:in `add_callback'
    from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/configuration.rb:101:in `before'
...

), пока я немного не изменю:

# here the ":each" symbol is very important and necessary.  
# :type => :controller is the "option"
config.before(:each, :type => :controller) do
  request.env["HTTP_REFERER"] = "/"
end

см. Документацию по rspec-1.3.2:

append_before(scope = :each, options={}, &proc)
Appends a global before block to all example groups. scope can be any of 
:each (default), :all, or :suite. 
When :each, the block is executed before each example. 
When :all, the block is executed once per example group, before any of its examples are run. 
When :suite the block is run once before the entire suite is run.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...