rspecでprivate methodを呼び出したい時の方法

privateメソッドを実行したいけど、できないよ!って場合の方法です。

sendを使えばできます。

class Foo

  private

  def foo
    puts 'hoge'
  end

end

x = Foo.new
x.send(:foo)
hoge
=> nil

x.foo
NoMethodError: private method `foo' called for #<Foo:0x007fa279135010>

こうなるので、sendを使ってメソッドを呼び出せば、private methodもテストできます。

これは便利だ。