【发布时间】:2014-03-04 05:20:01
【问题描述】:
我认为我在范围界定方面遇到了一些问题。
我有一个用于测试品牌资源的控制器规范文件。 在文件的开头,我测试了不同资源的访问权限 上下文块中的用户 a) 未登录 b) 非管理员用户登录 - 我调用我自己的辅助方法 login_user c) 管理员用户登录 - 我调用我自己的辅助方法, login_admin_user 那里的规格确实通过了。
然后我创建另一个上下文块来测试资源 已登录的管理员用户。 我尝试按照前面的方法在 before 钩子中调用 login_admin_user 规格。
它失败了,我怀疑当前范围在 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'
--------- 提取结束 ------
我的规格如下:
--------- 规格/控制器/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
--------- 规格/控制器/brands_controller_spec.rb(结束)
【问题讨论】:
标签: rspec