利用方法
def mock = new MockFor(Callee.class) mock.demand.fn01{printLn "fn01"} mock.demand.fn02{printLn "fn02"} mock.use{ def obj = new Callee() obj.fn01() obj.fn02() }
MockForのコンストラクタのパラメータに処理を書き換える対象となるクラスを渡す。
demandメソッドで関数が呼ばれるというルールと呼ばれたときの処理を記述する。
useメソッドで対象となるクラスを利用する。demandメソッドで要求したメソッドが呼ばれていない場合、エラーが発生する。
demandメソッドでは、もともと存在しないメソッドを追加できる。存在するメソッドの場合は動作が書き換えられる。
StubForも同様の使い方ができるが、MockForとは微妙な違いがある。
MockForはdemandしたメソッドは必ずuse内で呼ばれる必要があるが、StubForは呼ばれなくて良い。
両者とも呼ばれたメソッドはdemandで指定していなくてはならない。
MockForがdemandで要求したメソッドの順番でメソッドが呼ばれる必要があるが、StubForは順番は気にする必要はない…ような感じだが交互にメソッドが呼ばれた場合とか動作は不明なので、調べないといけない…