[Seasar-user:8922] Re: Request自動バインディングしたクラスのテスト方法

Nakata Kouji [E-MAIL ADDRESS DELETED]
2007年 7月 4日 (水) 08:48:19 JST


なかたです。

07/07/04 に Koichi Kobayashi<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 小林 (koichik) です.
>
> Date:    Tue, 3 Jul 2007 16:45:26 +0900
> From:    "Nakata Kouji" <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:8909] Request自動バインディングしたクラスのテスト方法
>
> > Request自動バインディング(http://s2container.seasar.org/2.4/ja/DIContainer.html#Request)
> > を使ったクラスのテストをしたいのですが、どういう方法がいいのでしょうか?
>
> どういうテストをしたいのかにもよりますが,
> S2TestCase や S2Unit4 では HttpServletRequest 等の
> モックを設定済みなので,何も気にしなくても request
> スコープのコンポーネントを扱うことができます.
>
> fooTest.dicon に次の定義があるとして,
>
> <component name="foo" instance="request" class="Foo"/>
>
> public class FooTest extends S2TestCase {
>  Foo foo;
>
>  protected void setUp() throws Exception {
>    super.setUp();
>    include("fooTest.dicon");
>  }
>
>  public void test() throws Exception {
>    assertTrue(foo.execute());
>  }
> }

これって、インスタンス管理の話ですよね?
request.setAttribute("foo", new Foo());
と同義の。そっちじゃなくて、プロパティにrequest を持つと、自動的にバインドしてくれる
機能の方なんです。

ユニットテストで、
public class FooImpl implements Foo {
のクラスを
Foo foo = (Foo)container.getComponent(Foo.class);
と取得したときに、すでに request にバインドされた状態で返されるにはどうするか?
と言い換えることもできます。



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