[Seasar-user:16310] Re: [s2-container] あるテストのときだけMockInterceptorを使ったMockに置き換えたいとき
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2008年 11月 17日 (月) 15:30:07 JST
小林 (koichik) です.
Date: Mon, 17 Nov 2008 13:19:18 +0900
From: "Mitsutaka Sato" <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:16308] Re: [s2-container] あるテストのときだけMockInterceptorを使ったMockに置き換えたいとき
> mock.diconのほうにname属性をつけてやってみたのですが、
> logic.diconに用意したほうがセットされてしまいました。
>
> 下記の例でいう、HogeServiceとHogeLogicは両方とも logic.dicon に
> 登録されている形です。
それでは app.dicon で mock.dicon をインクルード
していても,logic.dicon からは mock.dicon が
見えないのでモックは DI されません.
[Seasar-user:16297] で書いた
> > app.dicon
> > foo.dicon
> > baz.dicon
> > bar.dicon
> >
> > app.dicon に定義されているコンポーネントからは,
> > 上記の順番で優先的に見えます.
の「app.dicon に定義されているコンポーネントから」が
ポイントです.
コンポーネントは,それが定義されている dicon
およびその dicon がインクルードしている dicon に
定義されているコンポーネントだけが見えます (DI の
対象になります).
親の dicon に定義されたコンポーネントは
見えません (DI の対象になりません).
上記例で foo.dicon に定義されているコンポーネント
からは foo.dicon および baz.dicon に定義されている
コンポーネントが見えますが,app.dicon および
bar.dicon に定義されているコンポーネントは
見えません.
[Seasar-user:16297] でも書いた以下の図が
分かりやすいと思うので参照してください.
http://s2container.seasar.org/2.4/s2-framework/ja/apidocs/org/seasar/framework/container/S2Container.html
Logic を切り替えたいのであれば,HogeService は
app.dicon あるいは service.dicon に定義し,
そこで mock.dicon および logic.dicon を
インクルードしてください.
--
<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 メーリングリストの案内