ネットワークやDBにアクセスするコードは単体テスト時には実行したくないですよね。
そういうコードをテスト環境で切り替える方法はいくつかありますが、一番お手軽な方法はメソッドを上書きする方法です。
方法1.サブクラスでoverride
class Target def foo open("http://yahoo.co.jp/") end end class TestingTarget < Target def foo return File.open("yahoo.html").read end end describe TestingTarget do it "testing" do target = TestingTarget.new target.foo.should == "expectation" end end
手順は以下です。
1.ネットワーク・DBにアクセスしているコードをメソッドに抽出する。
2.テスト用のサブクラスを作成し、1番で抽出したメソッドをoverrideする。
3.テスト用のサブクラスに対してテストをする