使用rspec测试自定义路由错误处理

时间:2014-06-11 08:58:09

标签: ruby-on-rails ruby-on-rails-4 rspec

我有一个rails 4 api应用程序,我可以捕获所有丢失的路径:

namespace :api, defaults: {format: :json} do
  namespace :v1 do
   # matchers ...
  end

  # catch all undefined paths and redirect them to the errors controller
  match "*path", to: "errors#routing_error", via: :all
end

通过简单的点击测试,这看起来像一个魅力,但我想写 这种行为的rspec测试。

在我的Rspec规范中,我尝试以下方法:

it "should capture non existing action" do
  get '/api/non-existing-action', format: :json  #Note that non-existing-action is not defined in the routes.rb
  #expectations come here
end

问题是Rspec似乎在路由器之前捕获了路由错误并引发了像这样的默认错误

ActionController::UrlGenerationError: No route matches {:action=>"/api/non-existing-action", :controller=>"api/api", :format=>:json}

所以我的问题是:有没有办法告诉Rspec它应该让我的路由器处理非现有路径,以便我可以期待错误控制器的错误响应?

0 个答案:

没有答案