Replace Dynamic Receptor with Dynamic Method Definition

適用すべき時

 デバッグが大変なmethod_missingを使わずに、動的に定義したいメソッドがある。

テストコード(1)

#rspec

describe Decorator do
  let(:post){ Post.new }
  let(:decorator){ Decorator.new(post) }

  describe 'method_missin(sym, *args, &block)' do
    context 'valid method' do
      it{ decorator.success.should be_true }
    end
    context 'invalid method' do
      specify{ expect{ decorator.no_method('arg1', 'arg2') }.to raise_error(NoMethodError) }
    end
  end
end

テストコード(2)

#rspec

describe Person do
  let(:person){ Person.new }

  describe 'empty_name?' do
    it{ person.empty_name?.should be_true }
  end
end

※参考資料
 リファクタリング:Rubyエディション