Полагаю, у меня есть некоторые проблемы со сферой.
У меня есть файл спецификации контроллера, который проверяет ресурс брендов.
В начале файла я проверяю доступ ресурса к разным
пользователи в блоке контекста
а) не вошли в систему
б) не пользователь с правами администратора - я вызываю свой собственный вспомогательный метод, login_user
в) администратор вошел в систему - я вызываю свой собственный вспомогательный метод
login_admin_user
Спецификации проходят успешно.
Затем я создаю другой блок контекста, чтобы просто проверить ресурс на наличие
администратор, который вошел в систему.
Я пытался вызвать login_admin_user в хуке before, как и в предыдущем
спецификации.
Сбой, и я подозреваю, что текущая область действия в хуке before
не видит мой пользовательский вспомогательный метод, login_admin_user.
Вот сообщение об ошибке:
--------- Начало извлечения -----------------
/usr/local/rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/
active_support/dependencies.rb:235:in `load': /Users/anexiole/projects/
try_rails/spec/controllers/brands_controller_spec.rb:164: syntax
error, unexpected keyword_end, expecting $end (SyntaxError)
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/
active_support/dependencies.rb:235:in `block in load'
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/
active_support/dependencies.rb:227:in `load_dependency'
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/
active_support/dependencies.rb:235:in `load'
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.6.4/lib/
rspec/core/configuration.rb:419:in `block in load_spec_files'
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.6.4/lib/
rspec/core/configuration.rb:419:in `map'
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.6.4/lib/
rspec/core/configuration.rb:419:in `load_spec_files'
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.6.4/lib/
rspec/core/command_line.rb:18:in `run'
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.6.4/lib/
rspec/core/runner.rb:80:in `run_in_process'
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.6.4/lib/
rspec/core/runner.rb:69:in `run'
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.6.4/lib/
rspec/core/runner.rb:11:in `block in autorun'
---------- Извлечь конец ------------------
Мои спецификации следующие:
--------- spec / controllers / brands_controller_spec.rb (начало)
require 'spec_helper'
describe BrandsController do
# This should return the minimal set of attributes required to create a valid
# Brand. As you add validations to Brand, be sure to
# update the return value of this method accordingly.
def valid_attributes
{
'name' => 'J Speed',
'description' => 'From gunsai province'
}
end
context 'checking access for varying users' do
describe 'brands access is not available to users who have not
signed in' do
it 'users that are not logged in will be sent to the sign
in page' do
get :index
response.should redirect_to(new_user_session_path)
end
end
describe 'brands access is not available to regular users' do
login_user
it 'regular users that are logged in will be sent to home
page' do
get :index
response.should redirect_to(root_path)
end
end
describe 'brands access is available only to admin users' do
login_admin_user
it 'admin users that are logged in can access the index
page' do
get :index
response.should render_template('index')
end
end
end
context 'with an admin user signed in' do # <----- starts
failing in this context
before(:each) do
login_admin_user
end
describe "creates a new brand entry" do
it "assigns a new brand as @brand" do
get :new
assigns(:brand).should be_a_new(Brand)
end
end
end
end
--------- spec / controllers / brands_controller_spec.rb (конец)