旅好きエンジニアのメモ

旅のこと映画、統計、会計、プログラミングなど、気の向くままに語ります

Rspecのstub(スタブ)を使ってみる

Rspecのstub(スタブ)を使ってみる

rubyにかぎらずテストを書いていたら、どうしてもここの処理はこの値が返ってきてほしいところとかありますよね。(テストを行うために恣意的に値を返したい)
そんなときはstub(スタブ)を使いましょう。
自分はwebスクレイピングとかのテストのとき使っていました。(なかなかテストが難しいですからね)

stub(スタブ)とは

あるオブジェクトのメソッドが呼ばれたら、指定した戻り値を返すものです。

書き方

# allow(object).to receive(method).and_return(return value)
allow(job).to receive(:webscraping).and_return("返したい値")

#恣意的に特定の値をテストのために返したいメソッド
def webscraping(url)
open(url) { |f| Nokogiri::HTML.parse(f.read, nil) }
end


(注)これでテストは書けますが 以下のようにテストの回答と一致させても意味は無いのであくまでどうしても処理の途中で呼ぶ出すメソッドとかに使ってください。
expect(job.webscraping).to eq "何かの値"