RSpecでprivate(プライベート)メソッドをテストする[Ruby][Rails]


Where?

RSpecでプライベートメソッドをテストするときの方法を見付け足ので忘備録でメモ。


🎂 実装方法

ソースコード側は次のとおりです。

# -*- coding: utf-8 -*-
class Test
def public_method
"public/パブリック"
end

private
def private_method
"private/プライベート"
end
end

RSpecのテストコード側は次の通りです。
Object#sendメソッド(Objectの持っているメソッドを呼び出す)を使えば、privateメソッドを呼び出せるようです!

# -*- coding: utf-8 -*-
require_relative 'test'

describe Test do
before(:each) { @sample = Test.new }

context 'publicメソッドを呼び出す場合' do
subject { @sample }
its(:public_method) { should == "public/パブリック" }
end

context 'privateメソッドを呼び出す場合' do
subject { @sample.send(:private_method) }
# Object#sendはレシーバの持っているメソッドを呼び出す
it { should == "private/プライベート" }
end
end

🚕 参考リンク

RSpecでprivateメソッドをテストする

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍