投稿

rspecでスタブを使用

rspecでスタブを使用

rspecでスタブを使用

テスト対象が外部サービスや環境依存の値に依存していて、実際の値を使うとテストが不安定になるときに使う。allow(...).to receive(...).and_return(...) でメソッドの戻り値を差し替える(スタブ化する)と、そのメソッドが呼ばれた際に実際の処理を実行せず、指定した値を返すようになる。

staticメソッド

describe "comment" do
  context "サービスがHOGEの場合" do
    before do
      allow(Global.application).to receive(:service).and_return("HOGE") #<= キモ
      ...
    end

    it 'hoge' do
      ...
    end
  end
end

[RSpec] allow、receive、and_return メソッドを使って特定のメソッドをスタブ化する - Qiita

ハッシュ

    before do
      allow(ENV).to receive(:[]).and_call_original
      allow(ENV).to receive(:[]).with("RAILS_ENV").and_return("development")
    end