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

photo credit: Jeremy Kendall via photopin cc

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

前回、受けた指摘を直して再度レビューしてもらったら、以下の指摘を受けた。

この関数はprivateにした方が見やすいです

今までpublicだったメソッドをprivateにすると、テストが軒並み落ちたので、RSpecでprivateメソッドをテストする方法を調べたら、以下の記事が引っかかったのだが、引数があるメソッドの書き方が書いていなかった…。

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

というわけで、いつも通り、原典にあたったところ、引数がある場合のサンプルコードがそのまま書いてあったので、助かった。

やったこと

  • publicだったメソッドをprivateに
  • テストコードを修正

サンプルコード

class Sample
  def public_method
    "public"
  end

  private

  def private_method(*args)
    "private " + args.join(' ')
  end
end

sample = Sample.new
p sample.send(:private_method, "hello") #=> ""private hello"

参考URL