我想验证我的网络应用程序中的我的网址会返回404 Not found。我知道它不存在,但我需要通过Rspec的测试确认。怎么样?这不起作用:
it "404" do
get "/some_url_404"
expect(response.status).to eq 404
end
测试本身失败了:
的ActionController :: RoutingError: 没有路线匹配[GET]“/ some_url_404”
更新
答案尚未给出。
答案 0 :(得分:0)
最合适的地方是request spec(spec/requests
子文件夹)。上面的代码段应该按预期工作。
答案 1 :(得分:0)
要实现此目的,您可以创建一个路径以匹配未使用此定义的所有路径:
get '*path', to: "controller#action"
上面的controller
和action
表示您希望对未列出的路线的所有请求都应该使用的控制器和操作。以下是控制器操作的方式
#controller/action
def action
render(:file => "#{Rails.root}/public/404.html", status: 404)
end
确保路线位于路线的底部。如果没有,所有请求都将在那里结束。
答案 2 :(得分:0)
实际答案已在帖子here中介绍。
您需要在test.rb中更改以下设置:
consider_all_requests_local = false
config.action_dispatch.show_exceptions = true