Проверьте, вызывается ли метод из спасательного блока в Rails Minitest - PullRequest
0 голосов
/ 12 марта 2020

У меня есть метод модуля, который вызывается из контроллера, как показано ниже:

class MyController
  include MyControllerExtension
end

module MyControllerExtension
  def some_method
    @variable.update!(params)
    respond_to do |format|
      format.html { redirect_to action: 'show' }
    end
  rescue App::CustomErrors::SomeMethodError => e
    errors_catch_method(e)
  end

  def errors_catch_method(error)
    case error
    when App::CustomErrors::SomeMethodError
      formatted_redirect_method 'index'
    when App::CustomErrors::AnotherMethodError
      render action: 'maintenance'
  end

  def formatted_redirect_method(url)
    format.html { redirect_to action: url }
  end
end

Теперь мне нужно проверить redirected path всякий раз, когда ошибка возникает и перехватывается блоком rescue. Тестовый код выглядит следующим образом:

MyController::any_instance.stubs(:some_method).raises(App::CustomErrors::SomeMethodError)

Всякий раз, когда тестовый код достигает значения some_method, возникает ошибка, но она не перенаправляется на URL в formatted_redirect_method. На самом деле даже errors_catch_method не называется. Он только поднимается, но не входит в блок rescue. Что я должен сделать, чтобы minitest подтвердил код внутри rescue блока?

...