In Rails 3.2.9 Ich habe Seiten benutzerdefinierte Fehler definiert wie folgt aus:Testing Fehlerseiten in Rails mit Rspec + Capybara
# application.rb
config.exceptions_app = self.routes
# routes.rb
match '/404' => 'errors#not_found'
, die wie erwartet funktioniert. Als ich eingestellt config.consider_all_requests_local = false
in development.rb
erhalte ich die not_found
Ansicht, wenn /foo
Besuch
Aber wie kann ich testen diese mit Rspec + Capybara?
Ich habe dies versucht:
# /spec/features/not_found_spec.rb
require 'spec_helper'
describe 'not found page' do
it 'should respond with 404 page' do
visit '/foo'
page.should have_content('not found')
end
end
Als ich diese spec ich laufen:
1) not found page should respond with 404 page
Failure/Error: visit '/foo'
ActionController::RoutingError:
No route matches [GET] "/foo"
Wie kann ich das testen?
Edit:
vergessen zu erwähnen: Ich config.consider_all_requests_local = false
in test.rb
Danke, das war genau das, was mir gefehlt hat. Ich dachte, das Problem liege tiefer, also habe ich angefangen, in Capybara herumzukramen ... –
Wie wäre es mit einer Controller-Spezifikation? Mit diesen Änderungen funktionieren meine Feature-Spezifikationen gut, aber ich bekomme immer noch den fehlgeschlagenen Test (mit einem ActiveRecord :: RecordNotFound-Fehler) in einer Controller-Spezifikation. Gibt es etwas, was ich für diese Dinge anders machen muss? – robertwbradford
Der Link ist kaputt und befindet sich jetzt unter http://agileleague.com/blog/rails-3-2-custom-error-pages-the-exceptions_app-and-testing-with-capybara/ –