ひがやすを技術ブログ

電通国際情報サービスのプログラマ

MockInterceptor

アドバイスをふまえ次のように考えてみました。


interface Hello {
public String greeting();
}

<component name="helloMockInterceptor"
class="org.seasar.framework.aop.interceptors.MockInterceptor">
<property name="value">"Hello"
</component>
<component class="Hello">
<aspect>helloMockInterceptor</aspect>
</component>
戻り値はvalueプロパティで指定します。
例外を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());
書いてて欲しくなってきた。
早速作ることにしよう。(^^;
最初からこいつがあればかなりテスト楽だったのに。