Я пытался написать несколько быстрых тестов маршрутизации для простого API, поэтому я написал:
it "delete" do
delete("/api/notifications/:id").should_not be_routable
end
Но я получил:
Failure/Error: delete("/api/notifications/:id").should_not be_routable
expected {:delete=>"/api/notifications/:id"} not to be routable, but it routes to {:controller=>"application", :action=>"rescue404", :a=>"api/notifications/:id"}
Я быстро понял, что спасаюсь от 404, так что почти все маршрутизируемо.
unless Rails.env.development?
rescue_from NotFound, :with => :rescue404
rescue_from ActiveRecord::RecordNotFound, :with => :rescue404
rescue_from ActionController::RoutingError, :with => :rescue404
end
def rescue404
respond_to do |format|
format.json { render :text => 'Something went wrong. Record not found or url is incorrect.\n' }
format.xml { render :text => 'Something went wrong. Record not found or url is incorrect.\n' }
format.html { redirect_to root_url, :alert => 'That page does not exist, sorry bro!' }
end
end
Это оставляет меня для теста:
it "delete" do
delete("/api/notifications/:id").should route_to("application#rescue404", :a => "api/notifications/:id")
end
При написании этого текста я склонен к ошибкам, так как я постоянно ошибаюсь: Есть ли способ проверить, спасается ли исключение?
Это работает:
it "delete" do
delete("/api/notifications/:id").should raise_error()
end
... но какую ошибку я должен проверять? Или я должен просто оставить все как есть?