長すぎるメソッドチェーンの返り値をモック化

Overview

複数のメソッドを跨ぐ処理を1行でモック化する。

Motivation/Context

業務では複数のメソッドを渡り歩いて最終的にやっと返り値が帰ってくるっていうメソッドが存在する。
そんな時、一般的なモック化では跨ぐメソッドの数だけモック化する必要が出てくる。

そこで、このやり方を使えば、どれだけ中間メソッドが存在していても、一気に返り値だけモックできる。

途中のメソッドを無視しちゃうっていうデメリットもあるからバランス調整が必要だけどね。

Get Started!!

it '「天気」を含むツイートを返すこと' do
  weather_bot = WeatherBot.new
  allow(weather_bot).to receive_message_chain('twitter_client.search.first.text').and_return('西脇市の天気は曇りです')

  expect(weather_bot.search_first_weather_tweet).to eq '西脇市の天気は曇りです'
end

References

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