如何测试 Rspec 中不存在的网址?



我想在我的Web应用程序中验证我的URL 找不到404。我知道它不存在,但是我需要通过RSPEC通过测试来确认这一点。如何?这行不通:

it "404" do
  get "/some_url_404"
  expect(response.status).to eq 404
end

测试本身失败了:

ActionController :: RoutingError: 没有路由匹配[get]"/some_url_404"

update

尚未给出答案。

最合适的地方是请求spec( spec/requests subfolder)。上面的片段应按预期工作。

为了实现这一目标,您可以创建一条匹配所有未定义路径的路由:

get '*path', to: "controller#action"

上面的controlleraction表示您想要的所有未列出路由请求的控制器和操作。这是控制器的操作如何

#controller/action
def action
  render(:file => "#{Rails.root}/public/404.html", status: 404)
end

注意

确保路线放在路线底部。如果没有,所有请求将结束。

帖子中介绍了实际答案。

您需要更改test.rb中的以下设置:

consider_all_requests_local = false
config.action_dispatch.show_exceptions = true

最新更新