方法2.特異メソッドを定義する
class Target def initialize @inner_target = InnerTarget.new end def foo open("http://yahoo.co.jp/") end end describe TestingTarget do before(:all) target = TestingTarget.new def target.foo return File.open("yahoo.html").read end end it "testing" do target.foo.should == "expectation" end end
rubyのような動的言語ならテストクラス内でメソッドの上書きができちゃいます。
この方法の問題点はインスタンスメソッドの上書きはテストクラス内で生成したインスタンスでないとできないというところです。
たとえば、上記例で@inner_targetオブジェクトのインスタンスメソッドはテストクラス内で上書きできません。