Прежде всего, я согласен с тем, что в большинстве случаев правильное использование внешних вызовов API - это то, что нужно делать. Однако не в этом случае.
Я получаю случайные Timeout::Error
исключения в некоторых моих тестах, и я хотел бы иметь возможность игнорировать их и автоматически перезапускать пример. О сбое следует сообщать только после 10 неудачных попыток.
О любых других исключениях и сбоях следует сообщать.
Я пытался реализовать это поведение, используя глобальный хук around(:each)
в spec/spec_helper.rb
файле:
RSpec.configure do |config|
config.around(:each) do |example|
attempts = 0
passed = false
begin
attempts +=1
example.run
passed = true
rescue Timeout::Error => e
raise e if attempts >= 10
end until passed
end
end
Однако спасательная часть никогда не выполняется при возникновении исключения. Есть идеи почему?
Спасибо!
Dorian
P.S. Я использую rspec 2.6.0