У меня есть метод модуля, который вызывается из контроллера, как показано ниже:
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
блока?