如何测试由Rails Controller Concern添加的路由
我试图通过关注测试添加到控制器的路由。 我想写一个验收测试,其中包含关注者在控制器中的路线,以避免回归以及记录关注的用例。 这有意义吗? 如果是这样,那么如何通过测试中的关注访问添加到控制器的路由?
以下是我的应用程序路线的精简版。 在运行应用程序时, permissionable
关注路线按预期工作。
#routes.rb
routes.draw do
concern :permissionable do
member do
get 'permission', action: "permission_show"
end
end
resources :profiles, concerns: :permissionable
end
以及我的控制器关注的简化版本,这是我的ProfilesController
包含的
module PermissionActions
extend ActiveSupport::Concern
def permission_show
if current_user.admin?
render :text => "you have permissions for this entity"
end
render :text => "No permission for this entity"
end
def test_a_thing
"test"
end
end
最后,感谢这个问题的答案,我的rspec示例看起来像这样。
describe ApplicationController, type: :controller do
controller do
include PermissionActions
def index; end
end
describe 'a controller with permission actions' do
it 'can call a method' do
expect(@controller.test_a_thing()).to eq("test")
end
it 'exposes a permission route' do
get :permission
end
end
end
第一个例子有效,但第二个例子抱怨No route matches {:action=>"permission", :controller=>"anonymous"}
我尝试了太多的东西在这里列出所有的东西,但我认为的解决方案肯定会在测试中重新绘制路线,如下所示:
...
it 'exposes a permission route' do
routes.draw {
concern :permissionable do
member do
get 'permission', action: "permission_show"
end
end
resources :anonymous, concerns: :permissionable
}
# response = @controller.permission_show()
get :permission, :id => "anyId"
expect(response).to have_http_status(200)
end
链接地址: http://www.djcxy.com/p/47197.html