[Seasar-user:16297] Re: [s2-container] あるテストのときだけMockInterceptorを使ったMockに置き換えたいとき
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2008年 11月 13日 (木) 22:00:03 JST
小林 (koichik) です.
Date: Thu, 13 Nov 2008 21:01:45 +0900
From: "Mitsutaka Sato" <[E-MAIL ADDRESS DELETED]>
To: seasar-user <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:16296] [s2-container] あるテストのときだけMockInterceptorを使ったMockに置き換えたいとき
> 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 の定義だけコンポーネント名が
指定されていないでしょうか?
もしそうなら,mock.dicon でもコンポーネント名を
指定してください.
<component
name="hogeLogic"
class="com.hoge.HogeLogic"
instance="prototype">
Seasar2.4 では最初にコンポーネントを名前で検索します.
そのため,片方だけ名前が指定されていると,常にそちらが
DI されます.
> logic.diconをincludeしなければいいだけの話なんですが、他にもたくさん登録されているので。
> 横着できる方法はないかと。
>
> 同じインターフェースを持つComponentの場合、優先される順位とかあるんでしょうか?
あります.
app.dicon が foo.dicon と bar.dicon をこの順で
インクルードし,foo.dicon が baz.dicon を
インクルードしている場合,
app.dicon
foo.dicon
baz.dicon
bar.dicon
app.dicon に定義されているコンポーネントからは,
上記の順番で優先的に見えます.
つまり,
・app.dicon がもっとも優先
・foo.dicon は bar.dicon や baz.dicon より優先
・baz.dicon は bar.dicon より優先
となります.
こちらの図も参考にしてください.
http://s2container.seasar.org/2.4/s2-framework/ja/apidocs/org/seasar/framework/container/S2Container.html
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-user メーリングリストの案内