Как я могу использовать rspec для тестирования маршрутов, которые спасаются и перенаправляются? - PullRequest
1 голос
/ 22 ноября 2011

Я пытался написать несколько быстрых тестов маршрутизации для простого 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

... но какую ошибку я должен проверять? Или я должен просто оставить все как есть?

1 Ответ

0 голосов
/ 20 марта 2012

Вы можете изменить свои спасения. Изменения:

unless Rails.env.development?

до:

if Rails.env.production?

Это должно исключить тестовое окружение из вашего поведения rescue404.

...