クラスやモジュールごとに、メソッドをテストするプログラムを作成する。まずは、このテストプログラムから書くのが現在の開発スタイル。テストプログラムを書く時間が増えるが、けっして開発時間が倍になるわけではない。バグが減り、信頼性の高いプログラムができる上に、割と開発が早い。
実際に書いてみた。
hogefuga.rb ←本番プログラム
--------------------------
class HogeFuga
def hoge(n)
if n < 10
x = 1 + n
return x
else
return "abc"
end
end
def fuga
return "def"
end
end
--------------------------
test_hogefuga.rb ←テストをするプログラム
--------------------------
require 'test/unit'
require 'hogefuga'
class Test_HogeFuga < Test::Unit::TestCase
def test_hoge
inst = HogeFuga.new
assert_equal(2, inst.hoge(1))
assert_equal(3, inst.hoge(2))
assert_equal(4, inst.hoge(3))
assert_equal(5, inst.hoge(4))
assert_equal(10, inst.hoge(9))
assert_equal("abc", inst.hoge(10))
end
def test_fuga
inst = HogeFuga.new
assert_equal("def", inst.fuga)
end
end
--------------------------
実行結果

細かいバグがなくなりそうで、いいなーと思う。
「テストケースは正常ルートと運用上起きそうな異常ルートのみで充分」
○Mock class(モッククラス)
※Mockは「模造品」という意味
Mock class は、例えばDBへ書き込むメソッドがあるとして、テストで本番のDBへ書き込まれても困るので、テストDBに書き込むなり、代わりに何か他のものを返すなりする為に用意するクラス!?
Mock classを利用するときは、もちろん require 'モッククラス' とする。