根据我的理解规格规格 http://relishapp.com/rspec/rspec-rails/v/2-1/dir/controller-specs/anonymous-controller,我希望下面的例子能够通过。
describe ApplicationController do
controller do
def test
end
end
it "calls actions" do
get :test
end
end
相反,它失败了:
No route matches {:controller=>"anonymous", :action=>"test"}
我什至尝试在路由文件中定义“匿名”控制器的路由,但无济于事。我在这里缺少什么吗?这应该有效,不是吗?
为了在匿名控制器规范中使用自定义路由,您需要修改 before 块中设置的路由。 RSpec 已经使用设置了 RESTful 路由resources :anonymous
在 before 块中,并在 after 块中恢复原始路由。因此,要获得自己的路线,只需调用draw on@routes
并添加您需要的内容。
这是一个来自ApplicationController
测试的规范rescue_from CanCan::AccessDenied
require 'spec_helper'
describe ApplicationController
controller do
def access_denied
raise CanCan::AccessDenied
end
end
before do
@routes.draw do
get '/anonymous/access_denied'
end
end
it 'redirects to the root when access is denied' do
get :access_denied
response.should redirect_to root_path
end
it 'sets a flash alert when access is denied' do
get :access_denied
flash.alert.should =~ /not authorized/i
end
end
Update
RSpec 2.12 左右对此的处理已得到改进。如果您使用 > 2.12 那么您不再需要挂钩@routes
.
为匿名控制器绘制自定义路由 https://www.relishapp.com/rspec/rspec-rails/v/3-0/docs/controller-specs/anonymous-controller#draw-custom-routes-for-anonymous-controllers
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)