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もテストできます。

これは便利だ。