以下の内容はhttps://anton0825.hatenablog.com/entry/20100618/1279038550より取得しました。


テスト時に実行したくないメソッドを切り替える方法2

方法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オブジェクトのインスタンスメソッドはテストクラス内で上書きできません。




以上の内容はhttps://anton0825.hatenablog.com/entry/20100618/1279038550より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14