Rails - функциональное тестирование redirect_to (request.referer) - PullRequest
1 голос
/ 03 октября 2011

Может быть, я просто снова пропустил лес за деревьями, но я не могу найти способ написать функциональный тест, который проверяет действие: destroy, которое перенаправляет на request.referer.

Кодэто:

  def destroy
    @step = Step.find(params[:id])
    @step.destroy

    respond_to do |format|
      format.html { redirect_to(request.referer) }
      format.xml  { head :ok }
    end
  end

Неудачный тест:

  test "should destroy step" do
    assert_difference('Step.count', -1) do
      delete :destroy, :id => @step.to_param
    end
    assert_redirected_to request.referer
  end

Не повезло, используя:

redirect_to(:back)

... а также.

Ответы [ 2 ]

4 голосов
/ 03 октября 2011

Понял.

Проходной тест:

  test "should destroy step" do
    assert_difference('Step.count', -1) do
      @request.env['HTTP_REFERER'] = 'http://test.com/steps/1'
      delete :destroy, :id => @step.to_param
    end
    assert_redirected_to @request.env['HTTP_REFERER']
  end

Благодаря помощи: Как мне установить HTTP_REFERER при тестировании в Rails?

0 голосов
/ 09 февраля 2012

вы пишете интеграционный тест и используете один из delete_via_redirect, который должен следовать за редиректом. Вам также может потребоваться установить заголовок HTTP_REFERER - см. Guide.rubyonrails.org

...