ruby-on-rails - 如何测试rspec中的路由错误?

标签 ruby-on-rails ruby rspec controllers

我通过删除 show 操作来简化资源,因为它不需要。只需要列出、创建和编辑。我的 rspecs 中仍然有我的 SHOW 测试,它现在失败了(很明显,因为我已经添加了一个 :except => [:show] 到我的路由文件。

这就是我失败的结果:

1) CampaignsController GET show assigns the requested campaign as @campaign
     Failure/Error: get :show, {:id => campaign.to_param}, valid_session
     ActionController::RoutingError:
       No route matches {:id=>"458", :controller=>"campaigns", :action=>"show"}
     # ./spec/controllers/campaigns_controller_spec.rb:49:in `block (3 levels) in <top (required)>'

  2) CampaignsController routing routes to #show
     Failure/Error: expect(:get => "/campaigns/1").to route_to("campaigns#show", :id => "1")
       No route matches "/campaigns/1"
     # ./spec/routing/campaigns_routing_spec.rb:15:in `block (3 levels) in <top (required)>'

我怎样才能让这些测试通过,以便我预期路由错误?

最佳答案

你可以做

expect{ get :show }.to raise_error(ActionController::RoutingError)

参见 https://www.relishapp.com/rspec/rspec-expectations/v/2-0/docs/matchers/expect-error

您还可以考虑路由规范:https://www.relishapp.com/rspec/rspec-rails/v/2-4/docs/routing-specs

关于ruby-on-rails - 如何测试rspec中的路由错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23096483/

相关文章:

ruby-on-rails - 未定义方法relative_url_root为零:NilClass when running rspec on namespaced controller

ruby-on-rails - Rspec 测试 Sentry 的 Raven capture_exception

ruby-on-rails - 如何反转哈希到字符串的转换?

ruby-on-rails - 使用 rails 中的 REST API 在 paypal 中预先验证和拆分付款

ruby-on-rails - rails : Where do I put my API methods?

Ruby 和 SOAP 创建 Web 服务代理和命名空间

c++ - 从 ruby​​ 运行 C++ 程序

ruby-on-rails - 迁移时出现Sqlite3错误,捆绑安装时出现nokogiri错误,迁移到Rails3并进行一些合并后,gem冲突。 (苹果电脑)

ruby-on-rails - 如何检查纬度是否在城市范围内

rspec - turbolinks 有没有办法在 rspec/Capybara 中运行?