【发布时间】:2014-05-07 15:10:04
【问题描述】:
我正在尝试了解嵌套路由如何与 Rspec 一起使用。我有以下之一:
class SupportController < ResourceController
# stuff happens
def support_override
customer = Customer.find_by_id(params[:id])
customer.override( params[:override_key] )
redirect_to("support")
end
end
我们有一条路线:
resources :support do
member do
# loads of paths
get 'support_override/:override_key' => 'support#support_override'
end
end
并且路由通过了测试:
it "should route GET support/1/support_override/ABCDEF to suport#support_override" do
{ get: '/support/1/support_override/ABCDEF'}.should route_to(controller: 'support', action: 'support_override', id: '1', override_key: 'ABCDEF' )
end
但是,当我尝试在 rspec 中测试逻辑时:
describe SupportController do
# various levels of context and FactoryGirl calls
it "can reach override url" do
get :support_override, { :id=> @customer.id, :override_key="123" }
response.should redirect_to("support")
end
end
我收到以下回复:
失败/错误:无法从回溯中找到匹配行 AbstractController::ActionNotFound: 找不到 SupportController 的操作“support_override”
我毫不怀疑问题在于我对 rspec 如何处理嵌套路由的理解,但我看不到任何方法来确定 Rspec 实际寻求的路径,因此很难知道我需要更改什么而且我无法找到相关文档。
有没有办法找到测试正在创建什么路径,或者任何人都可以提供有关在这种情况下路径创建如何工作的指导?
【问题讨论】:
标签: ruby-on-rails rspec routes