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

こう書きます。