in Rails 3.2.9 Ho pagine di errore personalizzate definisce in questo modo:pagine di errore di test in Rails con Rspec + Capybara
# application.rb
config.exceptions_app = self.routes
# routes.rb
match '/404' => 'errors#not_found'
che funziona come previsto. Quando ho impostato config.consider_all_requests_local = false
in development.rb
ho la vista not_found
quando si visita /foo
Ma come faccio a testare questo con Rspec + Capybara?
Ho provato questo:
# /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
Quando eseguo questo spec ottengo:
1) not found page should respond with 404 page
Failure/Error: visit '/foo'
ActionController::RoutingError:
No route matches [GET] "/foo"
Come posso provare questo?
Edit:
dimenticato di dire: Ho impostato config.consider_all_requests_local = false
in test.rb
Grazie, era esattamente quello che mi mancava. Pensavo che il problema fosse più profondo di così, quindi avevo iniziato a scavare intorno a Capybara ... –
Che ne dici di una specifica del controller? Con questi cambiamenti le mie caratteristiche tecniche funzionano bene, ma sto ancora ricevendo il test fallito (con un errore ActiveRecord :: RecordNotFound) in una specifica del controller. C'è qualcosa che devo fare in modo diverso per questi? – robertwbradford
Il collegamento è interrotto ed è ora disponibile all'indirizzo http://agileleague.com/blog/rails-3-2-custom-error-pages-the-exceptions_app-and-testing-with-capybara/ –