[Seasar-user:16506] Re: インスタンスの差し替えと、MockInterceptorを使用したテストについて

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 12月 12日 (金) 20:00:05 JST


小林 (koichik) です.

Date:    Fri, 12 Dec 2008 18:08:21 +0900
From:    [E-MAIL ADDRESS DELETED]
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:16504] インスタンスの差し替えと、MockInterceptorを使用したテストについて

> public class XAction {
>     @Resource
>     private XService xService;  … (1)
> }
> 
> public class XService {
> }
> 
> public class SubXService extends XService {
> }
> 
> というように上記の3つのクラスがあった場合
> 普通の構成で動作させると(1)にはXServiceのインスタンスが
> インジェクションされると思いますが、これをSubXServiceを
> インジェクションするようにすることは可能でしょうか?

    @Resource
    private XService subXService;

または

    @Resource(name="subXService")
    private XService xService;

とすれば可能です.

> 2、MockInterceptorを使用してテストを行った場合に、
>    実行したメソッドの戻り値をオブジェクトにしたいと
>    思っているのですが、これをdiconファイルで記述
>    することは可能でしょうか?

以下のように指定できます.

<component class="...">
  <aspect>
    <component class="org.seasar.framework.aop.interceptors.MockInterceptor">
      <initMethod name="setReturnValue">
        <arg>"someMethod"</arg>
        <arg>
          <!--戻り値となるオブジェクトの定義 -->
          <component class="...">
          </component>
        </arg>
      </initMethod>
    </component>
  </aspect>
</component>

<component> には通常通り <property> や <initMethod> を
指定することができます.


-- 
<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 メーリングリストの案内