Я пытаюсь пройти тесты для страниц 404 и 500. Но у меня много проблем
1) Во-первых, у меня есть страница 500.html.erb внутри app/views/errors/, которая не вызывается.
2) Если я запускаю приведенный ниже тест, моя система зависает, и мне нужно перезагрузить систему
3) Если я прокомментирую эту строку expect{get "/errors/foo"}.to raise_exception( ActionController::RoutingError). Таким образом, в моем контроллере имя действия page 500 передается как параметры, но моя система все равно зависает
Может ли кто-нибудь помочь мне решить эту проблему
errors_spec.rb
require "spec_helper"
describe "Errors" do
before do
allow(Rails).to receive(:env).and_return(ActiveSupport::StringInquirer.new("production"))
end
it "renders the 500 page" do
get "/errors/500"
expect(response.status).to eq(500)
end
it "renders the 404 page" do
get "/errors/404"
expect(response.status).to eq(404)
end
it "raises an exception if the page doesn't exist" do
expect {get "/errors/foo"}.to raise_exception(ActionController::RoutingError)
end
end
errors_controller.rb
class ErrorsController < ApplicationController
skip_before_filter :authenticate_user!
EXTERNAL_ERRORS = ['sso']
VALID_ERRORS = ['404', '403', '500', 'maintenance'] + EXTERNAL_ERRORS
def show
status = external_error? ? 500 : 200
render page , status: status
end
def blocked
end
private
def page
if VALID_ERRORS.include?(params[:id])
params[:id]
else
raise(ActionController::RoutingError.new("/errors/#{params[:id]} not found"))
end
end
def external_error?
EXTERNAL_ERRORS.include?(params[:id])
end
end
ErrorsController
? - person Stefan   schedule 13.12.2017