rspecでプライベートメソッドのテストを書きたい場合は
テストを書くとpublicのメソッドだけでなく、privateについても書きたくなる事が暫しあります。
javaの場合だとリフレクションを使ってできますが、rubyの場合、どうするのかなと思って調べたらそこはsendメソッドを使えば出来るとあり、あー確かにそうだということで書いてみました。
以下はサンプルです。
class Test def test_public_method ~~~~ results = test_private_method ~~~~ end def test_private_method # 何かごりごり書く。テストしたいくらいに end
これがそのテスト対象のクラスだとするとテストは以下のようになる。
describe 'privateメソッドのテスト' do context '~~~の場合' do before do end it '~~する' do result = Test.new.send(:test_private_method) # 引数がある場合は、Test.new.send(:test_private_method, val1) みたいになる。 end end end
こう書きます。