如何测试Rails 4.x中不存在路由

时间:2015-05-15 14:27:02

标签: ruby-on-rails

如果我的路线,我如何测试它返回404?

以下是routes.rb的相关部分

resources :reservations, only: [:index,:create,:destroy]

您可以创建,销毁和列出预订,但不能更改它们。

然后测试是:

patch :update, id: @reservation, reservation: { somefield: "data" }
assert_response :missing

这应该通过,因为缺少路由应该返回404.相反,我得到一个UrlGenerationError:

ActionController::UrlGenerationError: No route matches {:action=>"update", :controller=>"reservations", :id=>"980190962", :reservation=>{:somefield=>"data"}}

我明白了;来自测试的patch调用无法生成URL。那么我该如何测试这样的URL调用会产生404?

1 个答案:

答案 0 :(得分:4)

你实际上可以断言这样的错误已被抛出,这对你来说是否足够?

assert_raise ActionController::UrlGenerationError do
  patch :update, id: @reservation, reservation: { somefield: "data" }
end