Ruby on rails 出于某种原因,命名路由在功能测试中不起作用
在我的测验中,控制器功能测试:Ruby on rails 出于某种原因,命名路由在功能测试中不起作用,ruby-on-rails,routes,functional-testing,Ruby On Rails,Routes,Functional Testing,在我的测验中,控制器功能测试: post :statements 返回-> ActionController::RoutingError: No route matches {:controller=>"quizzes", :action=>"statements"} 但我的路线是这样的: quizzes_statements /quizzes/statements(.:format) quizzes#statements {:any=>[:OPTIONS, :POST
post :statements
返回->
ActionController::RoutingError: No route matches {:controller=>"quizzes", :action=>"statements"}
但我的路线是这样的:
quizzes_statements /quizzes/statements(.:format) quizzes#statements {:any=>[:OPTIONS, :POST]}
My routes.rb看起来是这样的:
match '/quizzes/statements' => 'quizzes#statements', any: [:OPTIONS, :POST]
如果我在测试中运行这个:
extend Rails.application.routes.url_helpers
quizzes_statements_path
返回:
=> "/quizzes/statements"
但如果我这样做:
post quizzes_statements_path
我得到了同样的错误:
ActionController::RoutingError: No route matches {:controller=>"quizzes", :action=>"/quizzes/statements"}
有人知道这里会发生什么吗?使用以下命令:
match '/quizzes/statements' => 'quizzes#statements', via: [:options, :post]
在控制器(功能)测试中,您只能访问此控制器内的操作,用符号表示
e、 g
注意功能测试中的get
,post
方法与集成测试中的方法完全不同,尽管它们的名称相同。您可以在集成测试中使用命名路径,而不会出现任何问题。e、 g
post statement_path
因此,修复方法是,不要在功能测试中使用命名路径。直接采取行动。科蒂·索拉特(Kirti Thorat)真是太棒了。非常感谢你。ॐ
post statement_path