モックを使ってエラーをテスト

product code

class WeatherBot
  def tweet_forecast
    twitter_client.update '今日は晴れです'
  rescue => e
    notify(e)
  end

  def twitter_client
    Twitter::REST::Client.new
  end

  def notify(error)
    # (エラーの通知を行う。実装は省略)
  end
end

test code

it 'エラーが起きたら通知すること' do
  twitter_client_mock = double('Twitter client')
  # updateメソッドが呼ばれたらエラーを発生させる
  allow(twitter_client_mock).to receive(:update).and_raise('エラーが発生しました')

  weather_bot = WeatherBot.new
  allow(weather_bot).to receive(:twitter_client).and_return(twitter_client_mock)
  # notifyメソッドが呼ばれることを検証する
  expect(weather_bot).to receive(:notify)

  # tweet_forecastメソッドを呼び出す
  # weather_botのnotifyメソッドが呼び出されたらテストはパスする
  weather_bot.tweet_forecast
end

ref: https://qiita.com/jnchito/items/640f17e124ab263a54dd