[Seasar-user:16296] [s2-container] あるテストのときだけMockInterceptorを使ったMockに置き換えたいとき

Mitsutaka Sato [E-MAIL ADDRESS DELETED]
2008年 11月 13日 (木) 21:01:45 JST


佐藤と申します。
いつもお世話になっております。

class HogeService {

  @resource
  private HogeLogic hogeLogic;

}

HogeServiceのテストケースで、hogeLogicをMockInterceptorを使ったMockに置き換えたいとき、
どのようにすればよいでしょうか?

HogeLogicはlogic.diconに
    <component
        class="com.hoge.impl.HogeLogicImpl"
        instance="prototype">
        <aspect>j2ee.requiredTx</aspect>
    </component>
のように定義されていて、

mock.dicon に
    <component name="mockInterceptor"

class="org.seasar.framework.aop.interceptors.MockInterceptor">
        <initMethod name="setReturnValue">
            <arg>"getCenterSeq"</arg>
            <arg>"9998000001"</arg>
        </initMethod>
    </component>
    <component
        class="com.hoge.HogeLogic"
        instance="prototype">
        <aspect>mockInterceptor</aspect>
    </component>
と書いて、

app.diconでは
mock.diconとlogic.diconをincludeしました。
順番を入れ替えてみても、実態(HogeLogicImpl)のほうがセットされてしまいます。

logic.diconをincludeしなければいいだけの話なんですが、他にもたくさん登録されているので。
横着できる方法はないかと。

同じインターフェースを持つComponentの場合、優先される順位とかあるんでしょうか?

スマートな方法がありましたら教えてください。
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20081113/3abfb95d/attachment-0001.html>


Seasar-user メーリングリストの案内