MockInterceptor
アドバイスをふまえ次のように考えてみました。
interface Hello {
public String greeting();
}
戻り値はvalueプロパティで指定します。
<component name="helloMockInterceptor"
class="org.seasar.framework.aop.interceptors.MockInterceptor">
<property name="value">"Hello"
</component>
<component class="Hello">
<aspect>helloMockInterceptor</aspect>
</component>
例外をthrowするときは、throwableプロパティで指定します。
MockInterceptor#isInvoked(String methodName) : boolean
でモックの指定されたオブジェクトのメソッドが呼び出されたかを
チェックできます。
MockInterceptorは普通にコンポーネントとして
MockInterceptor mi = (MockInterceptor) container.getComponent(
MockInterceptor.class);
で取得できます。
MockInterceptor#getArgs(String methodName) : Object[]
で呼び出されたメソッドの引数もチェックすることができます。
次のように手動でやることもできます。
書いてて欲しくなってきた。
MockInterceptor mi = new MockInterceptor();
mi.setValue("Hello");
Hello hello = (Hello) mi.createMock(Hello.class);
assertEquals("Hello", hello.greeting());
早速作ることにしよう。(^^;
最初からこいつがあればかなりテスト楽だったのに。