如果我的路线不,我如何测试它返回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?
答案 0 :(得分:4)
你实际上可以断言这样的错误已被抛出,这对你来说是否足够?
assert_raise ActionController::UrlGenerationError do
patch :update, id: @reservation, reservation: { somefield: "data" }
end