FaradayでAPI通信を行っているとき、APIのタイムアウトを意図的に起こしたい時にどうするかというメモ
環境
rails (5.2.0) faraday (0.12.2) webmock (3.4.2)
考え方
Fardayはタイムアウトが発生すると Faraday::Error::TimeoutError
を raiseしてくれるので、WebMockでそれをraiseするmockを作れば良い。
やり方
https://example.com/users
の POSTのタイムアウトを実現したい場合
before do # 意図的にfaradayのTimeoutを発生させる stub_request( :post, "https://example.com/users", ).to_raise(Faraday::Error::TimeoutError) end
こんな感じのMockを作ればリクエスト発生時にraiseを起こしてくれるので、タイムアウト時の処理チェックができる。