http://www.thinkit.co.jp/cert/article/0608/12/4/3.htm memoです。 ソースはリスト8~10のようになります。 リスト8:Railsでのモッククラス(/test/mocks/test/credit_card_auth.rb) require 'models/credit_card_auth' class CreditCardAuth def auth(card_no) return true end end リスト9:Railsでの本番クラス(/app/models/credit_card_auth.rb) class CreditCardAuth < ActiveRecord::Base def auth(card_no) #クレジットカード処理を記述 ... end end リスト10:Railsでの呼び出し側クラス class ItemController < ApplicationController def buy card_auth = CreditCardAuth.new card_result = card_auth.auth(params[:card_no]) (中略) end (中略) end
この機構は、Rubyの「Open Class」などと呼ばれる特徴を利用しています。Open Classとは「再オープン可能なクラス」という意味で、何回でもクラスを再宣言してメソッドを追加したり上書いたりできる機構です。