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

Ruby on Rails + RSpec で privateメソッドをテストする方法をメモ。

下記のように、Userモデルに private_method というprivateメソッドを作成した場合、

■ app/models/user.rb

class User < ActiveRecord::Base
  def public_method
    "public"
  end
 
  private
    def private_method
      "private"
    end
end

Rspec でのモデルのテストは下記のように、user.send(:private_method) で呼び出して行う。

■ spec/models/user_spec.rb

require 'spec_helper'
 
describe User do
  it 'public' do
    user = User.new
    user.public_method.should == "public"
  end
 
  it 'private' do
    user = User.new
    user.send(:private_method).should == "private"
  end
end

【参考】

UKSTUDIO – RSpecでprivateメソッドをテストする はてなブックマーク - UKSTUDIO - RSpecでprivateメソッドをテストする